如何使用Java在根元素中获得多个命名空间定义?

时间:2016-01-06 14:50:09

标签: java xml

我正在尝试使用JAVA在根元素中创建一个XML DOM文件。

<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.1" 
 xmlns:uml="http://schema.omg.org/spec/UML/2.1"
 xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" 
 xmlns:cns="http://www.w3c.org/2016/XML/cns">
    <!--- lots of data -->
</xmi:XMI>

我已经尝试了几种方法,并且没有找到正确的方法。

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setNamespaceAware(true);
    Document doc = dbf.newDocumentBuilder().newDocument();
    Element root = doc.createElementNS("http://schema.omg.org/spec/UML/2.1", "xmi:XMI");
    doc.appendChild(root);

创建我的第一个命名空间定义。

 <?xml version="1.0" encoding="UTF-8"?>
 <xmi:XMI xmlns:xmi="http://schema.omg.org/spec/XMI/2.1">
    <!--- some data -->
</xmi:XMI>

但是如何创造其他人呢?我遇到了root.setAttributeNS("http://schema.omg.org/spec/UML/2.1", "uml:Model", null);,但后来才得到

<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI 
  xmlns:uml="http://schema.omg.org/spec/UML/2.1" 
  uml:Model="" 
  xmlns:xmi="http://schema.omg.org/spec/XML/2.1"/>
    <!--- some data -->
</xmi:XMI>

uml:Model属性不应该存在。任何想法?

1 个答案:

答案 0 :(得分:1)

这似乎可行:

root.setAttribute("xmlns:uml", "http://schema.omg.org/spec/UML/2.1");
root.setAttribute("xmlns:cns", "http://www.w3c.org/2016/XML/cns");

即只需将它们设置为普通属性即可。