我正在尝试读取现有的xml文件,该文件具有重复的命名空间声明。留下这些声明以便进一步处理对我来说很重要。之前我使用org.w3c.dom api的XERCES实现来读取这样的文档,并且所有声明都留下了,但是当我开始使用JDOM时,它开始省略冗余的名称空间声明。
以下是示例xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:ns="namespace_uri">
<element1>...</element1>
<element2>
<ns:child>
text
</ns:child>
<element3 xmlns:ns="namespace_uri">
<ns:child>
content
</ns:child>
</element3>
</document>
我正在使用以下代码构建JDOM Document:
SAXBuilder builder = new SAXBuilder();
File inputXml = new File(inputFile);
jdomInDoc = builder.build(inputXml);
有没有办法强制JDOM不要省略冗余的命名空间声明?
提前感谢您的答案。
答案 0 :(得分:0)
目前,JDOM无法保留冗余命名空间声明。如果您愿意,甚至可能会覆盖XMLOutputter以输出重复项。我可以看一下。
我已打开问题83 https://github.com/hunterhacker/jdom/issues/83
这可能会添加到JDOM格式系统
无论如何,我将在JDOM中查看是否可以进行自定义...
答案 1 :(得分:0)
根据冗余命名空间声明是否存在,将使用哪种软件接收此XML并对其进行不同的处理?同样的软件,如果它们用单引号分隔,只会处理属性,或者只包含在CDATA部分中的文本处理?
像Xerces或JDOM这样的通用XML软件有权假设收件人是一个表现良好的XML使用者,这意味着它不会附加词汇XML表示的意外,例如引号的选择,使用CDATA,或存在冗余的命名空间绑定。