我正在使用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 ... />
我该怎么做?
答案 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 =“...”而不是使用前缀。