使用Java中的命名空间创建XML文档

我正在寻找可以构造使用命名空间的XML文档的示例Java代码。 我似乎无法使用我喜欢的常用工具找到任何东西,所以希望有人可以帮助我。

我不确定,你想做什么,但我在大多数xml问题中都使用jdom ,它支持名称空间(当然)。

代码:

Document doc = new Document(); Namespace sNS = Namespace.getNamespace("someNS", "someNamespace"); Element element = new Element("SomeElement", sNS); element.setAttribute("someKey", "someValue", Namespace.getNamespace("someONS", "someOtherNamespace")); Element element2 = new Element("SomeElement", Namespace.getNamespace("someNS", "someNamespace")); element2.setAttribute("someKey", "someValue", sNS); element.addContent(element2); doc.addContent(element); 

生成以下xml:

     

哪个应该包含你需要的一切。 希望有所帮助。

有很多方法可以做到这一点。 只是几个例子:

使用XOM

 import nu.xom.Document; import nu.xom.Element; public class XomTest { public static void main(String[] args) { XomTest xomTest = new XomTest(); xomTest.testXmlDocumentWithNamespaces(); } private void testXmlDocumentWithNamespaces() { Element root = new Element("my:example", "urn:example.namespace"); Document document = new Document(root); Element element = new Element("element", "http://another.namespace"); root.appendChild(element); System.out.print(document.toXML()); } } 

使用W3C DOM的 Java实现

 import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.DOMImplementation; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.ls.DOMImplementationLS; import org.w3c.dom.ls.LSOutput; import org.w3c.dom.ls.LSSerializer; public class DomTest { private static DocumentBuilderFactory dbf = DocumentBuilderFactory .newInstance(); public static void main(String[] args) throws Exception { DomTest domTest = new DomTest(); domTest.testXmlDocumentWithNamespaces(); } public void testXmlDocumentWithNamespaces() throws Exception { DocumentBuilder db = dbf.newDocumentBuilder(); DOMImplementation domImpl = db.getDOMImplementation(); Document document = buildExampleDocumentWithNamespaces(domImpl); serialize(domImpl, document); } private Document buildExampleDocumentWithNamespaces( DOMImplementation domImpl) { Document document = domImpl.createDocument("urn:example.namespace", "my:example", null); Element element = document.createElementNS("http://another.namespace", "element"); document.getDocumentElement().appendChild(element); return document; } private void serialize(DOMImplementation domImpl, Document document) { DOMImplementationLS ls = (DOMImplementationLS) domImpl; LSSerializer lss = ls.createLSSerializer(); LSOutput lso = ls.createLSOutput(); lso.setByteStream(System.out); lss.write(document, lso); } }