在dom元素问题中创建命名空间

时间:2012-10-17 12:56:10

标签: java dom element

我试图用DOM APi创建XML文档,当我使用下面的代码时,我得到了 期待结果

Element rootTreeNode = document.createElementNS("http://schemas.microsoft.com/ado/2007","ex" + ":Ex")

这是输出控制台中带标签的输出

 ex:Ex Version="1.0" xmlns:ex="http://schemas.microsoft.com/ado/2007"/

现在我想在此元素中添加以下内容

**xmlns:gp**="http://www.pst.com/Protocols/Data/Generic"

并且我没有成功使用我尝试使用的 xmlns:gp 如下所示

rootTreeNode.setAttributeNS("xmlns" ,"gp","http://www.pst.com/Protocols/Data/Generic")

我得到的就像下面的

**xmlns:ns0="xmlns"** **ns0:gp**="http://www.pst.com/Protocols/Data/Generic"

如果在第一个参数

中加上null
rootTreeNode.setAttributeNS(null ,"gp","http://www.pst.com/Protocols/Data/Generic")

我只使用 gp 使用网址而不使用xmlns。

我在这里做错了什么?

感谢!!!

1 个答案:

答案 0 :(得分:1)

完成测试:

DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = dbfac.newDocumentBuilder();

Document doc = docBuilder.newDocument();

Element root = doc.createElementNS("http://schemas.microsoft.com/ado/2007","ex" + ":Ex");
root.setAttributeNS("http://www.w3.org/2000/xmlns/" ,"xmlns:gp","http://www.pst.com/Protocols/Data/Generic");

doc.appendChild(root);

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

StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
DOMSource source = new DOMSource(doc);
trans.transform(source, result);
String xmlString = sw.toString();

System.out.println("Xml:\n\n" + xmlString);