2009-02-09 38 views

Trả lời

14

Tôi không chắc chắn, những gì bạn đang cố gắng làm, nhưng tôi sử dụng jdom cho hầu hết các vấn đề xml của mình và nó hỗ trợ không gian tên (tất nhiên).

Mã:

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); 

tạo xml sau:

<?xml version="1.0" encoding="UTF-8"?> 
<someNS:SomeElement xmlns:someNS="someNamespace" xmlns:someONS="someOtherNamespace" someONS:someKey="someValue"> 
    <someNS:SomeElement someNS:someKey="someValue" /> 
</someNS:SomeElement> 

nào nên chứa tất cả mọi thứ bạn cần. Hy vọng rằng sẽ giúp.

20

Có một số cách để thực hiện việc này. Chỉ cần một vài ví dụ:

Sử dụng 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()); 
    } 
} 

Sử dụng Java Thực hiện W3C DOM

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); 
    } 
} 
+1

Và nếu bạn muốn tên phần tử với tiền tố (sử dụng XOM), chỉ cần gọi mới Element ("tiền tố : element "," urn: example.namespace "); –

Các vấn đề liên quan