Java XML:如何输出子元素的命名空间?

时间:2008-11-10 12:54:50

标签: java xml

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

这是创建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);

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

我该怎么做?

3 个答案:

答案 0 :(得分:2)

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

您是否检查过setNamespaceAware(true)个实例上的DocumentBuilderFactory

答案 1 :(得分:0)

javax.xml.transform的包描述有一个限定名称表示部分,这似乎意味着可以在输入和输出中表示名称空间。

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

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

答案 2 :(得分:0)

我发现你需要把它作为前缀,甚至不使用名称空间。

我使用了el.setAttribute(“xmi:type”,type),而不是el.setAttributeNS(“xsi”,“type”,type);或el.setAttributeNS(“http://www...../URI”,“type”,type); 我发现NS方法并不能完成你所做的事情。此外,它仍将使用xmlns =“...”而不是使用前缀。