2016-03-23 11 views
0

Ich verwendete die DocumentBuilderFactory zum Erstellen von XML-Datei wie hier getan: How to create XML file with specific structure in Java.Speichern Sie XML-Format in eine Zeichenfolge anstelle einer Datei

Anstatt es in einer Datei zu speichern, möchte ich das Ergebnis als Java-String speichern. Wie man das erreicht.

Duplizieren: How do I convert a org.w3c.dom.Document object to a String?

+0

Ich bin mit "org.w3c.dom.Document", während es "org.jdom.Document" verwendet wird. – 2c00L

+3

Oh ja sorry, siehe hier: http://stackoverflow.com/questions/10356258/how-do-i-convert-a-org-w3c-dom-document-object-to-a-string – Berger

+0

Richtig. Ich habe das auch gefunden. Vielen Dank. – 2c00L

Antwort

2

Dieses Beispiel kann Ihnen helfen.

import java.io.StringWriter; 
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 
import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerException; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 
import org.w3c.dom.Document; 
import org.w3c.dom.Element; 

public class DOMBasicDoc { 
    public static void main(String args[]) { 
     try { 
      String[] input = {"John Doe,123-456-7890", "Bob Smith,123-555-1212"}; 
      String[] line = new String[2]; 
      DocumentBuilderFactory dFact = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder build = dFact.newDocumentBuilder(); 
      Document doc = build.newDocument(); 
      Element root = doc.createElement("root"); 
      doc.appendChild(root); 
      Element memberList = doc.createElement("members"); 
      root.appendChild(memberList); 
      for (int i = 0; i < input.length; i++) { 
       line = input[i].split(","); 
       Element member = doc.createElement("member"); 
       memberList.appendChild(member); 
       Element name = doc.createElement("name"); 
       name.appendChild(doc.createTextNode(line[0])); 
       member.appendChild(name); 
       Element phone = doc.createElement("phone"); 
       phone.appendChild(doc.createTextNode(line[1])); 
       member.appendChild(phone); 
      } 
      TransformerFactory tFact = TransformerFactory.newInstance(); 
      Transformer trans = tFact.newTransformer(); 

      StringWriter writer = new StringWriter(); 
      StreamResult result = new StreamResult(writer); 
      DOMSource source = new DOMSource(doc); 
      trans.transform(source, result); 
      System.out.println(writer.toString()); 

     } catch (TransformerException ex) { 
      System.out.println("Error outputting document"); 
     } catch (ParserConfigurationException ex) { 
      System.out.println("Error building document"); 
     } 
    } 
} 
0

ich Rat Sie das Java documentation über I/O-Streams zu lesen. Speziell die characters stream section sprechen über Reader und Writer Klassen.

Wie Sie sehen können in the XMLOutputter JavaDoc die Methode output nimmt verschiedene Parameter. Sie müssen nur den entsprechenden Writer wählen, anstatt eine FileWriter verwenden Sie eine StringWriter zum Beispiel.

Allerdings haben die XMLOutputter auch outputString() Methoden, mit denen Sie einen String direkt diesen Job intern (wahrscheinlich) tun können.

Verwandte Themen