解析XML字符串不会在标记内保留空格

时间:2016-06-27 12:57:24

标签: java xml dom xml-parsing tags

我有一个带有这样标签的XML字符串:

<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />

请注意&#34; /&gt;&#34;之前的空格。由于我的规格,我必须保留这个空格,但每次解析字符串时,解析器都会删除该空格。

这是我的代码(&#34;行&#34;是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),但问题仍然存在。 有解决方案吗谢谢。

1 个答案:

答案 0 :(得分:0)

我看到两种可能性:

  1. 浏览XML树(在document中)并将结果写入字符串行。

  2. 使用您拥有的打印方法,然后执行replaceAll替换“/&gt;”的每次出现通过“/&gt;”,例如

    String result = result.replaceAll("\\/\\>", " />");