【问题标题】:Java XML: how to output the namespace of child elements?Java XML:如何输出子元素的命名空间?
【发布时间】:2008-11-10 12:54:50
【问题描述】:

我正在使用 Java 的 Transformer 类来处理 XML 文档对象。

这是创建 Transformer 的代码:

import javax.xml.transform.TransformerFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "no");
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");

transformer.transform(source, result);

目前,我的输出如下所示:。我希望它包含每个元素的命名空间,如

我该怎么做?

【问题讨论】:

标签: java xml


【解决方案1】:

请注意,<svg xmlns="SVGNS" /><svg:svg xmlns:svg="SVGNS" /> 相同。

您是否检查了您在 DocumentBuilderFactory 实例上调用了 setNamespaceAware(true)

【讨论】:

    【解决方案2】:

    javax.xml.transform 的包描述有一个 Qualified Name Representation 部分,这似乎暗示可以在输入和输出中获得命名空间。

    除了包含命名空间 URI 之外,我并不清楚结果会是什么样子。

    试一试 - 希望其他人会有更具体的经验。

    【讨论】:

      【解决方案3】:

      我发现你需要把它作为前缀放在自己身上,甚至不使用命名空间。

      例如,我使用了 el.setAttribute("xmi:type", type) 而不是 el.setAttributeNS("xsi", "type", type);或 el.setAttributeNS("http://www...../URI", "type", type); 我发现 NS 方法并没有完全按照您的意愿去做。此外,它仍然会呈现 xmlns="..." 而不是使用前缀。

      【讨论】:

        猜你喜欢
        • 2021-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多