2010-10-25 10 views

Répondre

3

Ce code convertit votre chaîne dans un document XML, ajoute un nouveau nœud, puis imprime comme une chaîne de sorte que vous pouvez vérifier qu'il semble correct.

public void xml() throws ParserConfigurationException, SAXException, IOException { 
    String msg = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>"; 
    msg += "<validateEmail><emailid>[email protected]</emailid><instanceid>instance1</instanceid>"; 
    msg += "<msgname>validatemsg</msgname><taskid>task1</taskid></validateEmail>"; 

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder builder = factory.newDocumentBuilder(); 

    Document doc = builder.parse(new ByteArrayInputStream(msg.getBytes())); 

    Node newNode = doc.createElement("newnode"); 
    newNode.setTextContent("value"); 
    Node root = doc.getFirstChild(); 
    root.appendChild(newNode); 

    try { 
     DOMSource domSource = new DOMSource(doc); 
     StringWriter writer = new StringWriter(); 
     StreamResult result = new StreamResult(writer); 
     TransformerFactory tf = TransformerFactory.newInstance(); 
     Transformer transformer = tf.newTransformer(); 
     transformer.transform(domSource, result); 
     System.out.println(writer.toString()); 
    } catch (TransformerException ex) { 
     ex.printStackTrace(); 
    } 
} 
1

Tout d'abord créer un objet DOM (modèle objet de document) représentant votre XML.

byte[] xmlBytes = msg.getBytes("UTF-8"); 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
Document doc = db.parse(new ByteArrayInputStream(xmlBytes)); 

Ensuite, vous devez ajouter votre nouveau nœud à lui:

Element newNode = doc.createElement("myNode"); 
newNode.setTextContent("contents of node"); 
Element root = doc.getDocumentElement(); // the <validateEmail> 
root.appendChild(newNode); 

Alors, vous voulez écrire sur le système de fichiers, si je comprends bien la question.

File outputFile = ...; 
Source source = new DOMSource(doc); 
Result result = new StreamResult(outputFile); 
Transformer xformer = TransformerFactory.newInstance().newTransformer(); 
xformer.transform(source, result); 
Questions connexes