2016-10-10 1 views
0

Ich möchte XML mit speziellen Tags erstellen. Ich habe versucht, es mit Dom zu machen, aber es hat nicht funktioniert.Xml Builder mit spezifischen Tags in Java

Ich möchte diese XML bauen:

<om2m:ae xmlns:om2m="http://www.onem2m.org/xml/protocols"> 
    <api>app-sensor</api> 
    <lbl>Type/sensor Category/temperature Location/home</lbl> 
    <rr>false</rr> 
</om2m:ae> 

Wie ich das tun, was soll ich verwenden?

habe ich versucht, diesen Code:

public String XMLBuilder(String process, HashMap<String, String> mapHash) { 
    String returnVal = ""; 
    try { 

     DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 
     Document doc = docBuilder.newDocument(); 
     Element rootElement; 
     if (process.equals("ae")) { 
      // root elements 
      rootElement = doc.createElementNS("http://www.onem2m.org/xml/protocols","m2m:ae"); 
      doc.appendChild(rootElement); 
     } 

     Iterator it = mapHash.entrySet().iterator(); 

     // Fill to xml 
     while (it.hasNext()) { 
      Map.Entry hashList = (Map.Entry) it.next(); 

      Element val = doc.createElement(String.valueOf(hashList.getKey())); 
      val.appendChild(doc.createTextNode(String.valueOf(hashList.getValue()))); 
      doc.appendChild(val); 
     } 
     // write the content into xml file 
     DOMSource source = new DOMSource(doc); 
     StringWriter writer = new StringWriter(); 
     StreamResult result = new StreamResult(writer); 
     TransformerFactory tf = TransformerFactory.newInstance(); 
     Transformer transformer = tf.newTransformer(); 
     transformer.transform(source, result); 
     returnVal = writer.toString(); 
     System.out.println(returnVal); 

    } catch (ParserConfigurationException e) { 
     e.printStackTrace(); 
    } catch (TransformerConfigurationException e) { 
     e.printStackTrace(); 
    } catch (TransformerException e) { 
     e.printStackTrace(); 
    } 
    return returnVal; 
} 

und ich bin immer Fehler:

org.w3c.dom.DOMException: HIERARCHY_REQUEST_ERR: An attempt was made to insert a node where it is not permitted. 

Antwort

1

ändern doc.appendChild(val); zu doc.getDocumentElement().appendChild(val); die neu erstellten Elemente als Kinder des Wurzelelement einzufügen.

+0

es hat funktioniert, danke. – Gkan