0

我正在尝试读取具有重复命名空间声明的现有 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 文档:

SAXBuilder builder = new SAXBuilder();
File inputXml = new File(inputFile);
jdomInDoc = builder.build(inputXml);

有什么方法可以强制 JDOM 不要省略多余的命名空间声明?

预先感谢您的回答。

4

2 回答 2

0

目前在 JDOM 中没有办法留下多余的命名空间声明。有可能,甚至有可能,如果您愿意,您可以覆盖 XMLOutputter 以输出重复项。我可以调查一下。

我已经打开了第 83 期https://github.com/hunterhacker/jdom/issues/83

这是可以潜在添加到 JDOM 格式系统的东西

无论如何,我将研究这在 JDOM 中是否可以通过自定义实现......

于 2012-05-15T09:32:03.910 回答
0

什么样的软件会接收这个 XML 并根据是否存在冗余命名空间声明来区别对待它?同一种软件可能只处理由单引号分隔的属性,或者只处理包含在 CDATA 部分中的文本?

Xerces 或 JDOM 等通用 XML 软件有权假定接收者是行为良好的 XML 使用者,这意味着它不会为词汇 XML 表示的意外附加意义,例如引号的选择、CDATA 的使用,或存在冗余命名空间绑定。

于 2012-05-15T11:04:31.020 回答