2009-02-09 17 views

Odpowiedz

14

Nie jestem pewien, co próbujesz zrobić, ale używam jdom dla większości moich problemów xml i obsługuje przestrzenie nazw (oczywiście).

Kod:

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

produkuje następujące xml:

<?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> 

która powinna zawierać wszystko, czego potrzeba. Nadzieja, która pomaga.

20

Istnieje wiele sposobów na zrobienie tego. Zaledwie kilka przykładów:

Korzystanie 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()); 
    } 
} 

Korzystanie Java Realizacja 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

A jeśli chcesz nazwę elementu z przedrostkiem (używając Xóm), po prostu zadzwoń do nowego elementu ("prefiks : element "," urn: example.namespace "); –

Powiązane problemy