【发布时间】:2016-06-27 12:57:24
【问题描述】:
我有一个带有这样标签的 XML 字符串:
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
请注意“/>”之前的空格。由于我的规范,我必须保留这个空白,但是每次我解析字符串时,解析器都会删除那个空白。
这是我的代码(“line”是 XML 字符串):
byte[] base64DecodedResponse = Base64.decode(line);
InputStream stream = new ByteArrayInputStream(base64DecodedResponse);
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setNamespaceAware(true);
documentBuilderFactory.setIgnoringElementContentWhitespace(true);
documentBuilderFactory.setValidating(true);
DocumentBuilder docBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = docBuilder.parse(stream);
我尝试更改解析器(Sax 而不是 javax.xml.parser),但问题仍然存在。 有什么解决办法吗?谢谢。
【问题讨论】:
-
你的意思是当你将xml输出写回文件时,你需要在每个/>之前放一个空格?如果是这种情况,您可能需要为 xml 编写自己的序列化程序。
-
我得到一个 Base64 文件,我对其进行解码,并获得了我的 XML 字符串,所有空格都在正确的位置,当我解析字符串以获取一个文档并打印它时,我请注意,“/>”之前的所有空格都消失了。我希望我能更清楚地说明我的情况。感谢您的回复。
-
如何打印“文档”的内容?
-
Java 类型 Document 不存储任何格式。格式在你刚才所说的打印方法中介绍过。我认为您必须制定自己的打印方法,将空间放置在正确的位置。
-
我使用 StringWriter 和 Transformer。 transformer.transform(new DOMSource(myDocument), new StreamResult(myStringWriter));然后 System.out.println(myStringWriter.toString());
标签: java xml dom xml-parsing tags