2008-11-10 68 views
3

我使用Java的Transformer类来处理XML文档对象。Java XML:如何输出子元素的名称空间?

这是创建变压器代码:

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 .../>

我该怎么做?

+0

[关于计算器在这里设置的命名空间的答案] [1] [1]:http://stackoverflow.com/questions/10584670/setting-namespaces-and-prefixes-in-a- Java的DOM文档/ 13048523#13048523 – Hans 2012-10-24 15:09:41

回答

2

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

你检查你叫你的DocumentBuilderFactory实例setNamespaceAware(true)

0

javax.xml.transform的封装说明有一个章节限定名称表示这似乎暗示有可能获得输入和输出中表示的名称空间。

这是不是真的比空间URI将列入我清楚的结果会是什么样子,其他的。

试试看吧 - 希望别人将有更多的具体经验。

0

我发现那是什么,你需要把它放在自己作为前缀,甚至没有使用的命名空间。我使用el.setAttribute(“xmi:type”,类型)为例,而不是el.setAttributeNS(“xsi”,“type”,type);或el.setAttributeNS(“http://www...../URI”,“type”,type); 我发现NS方法不会完成你将要做的事情。此外,它仍然会渲染它xmlns =“...”而不是使用前缀。

相关问题