将XML文档转换为字符串?

问题描述:

我一直在摆弄这个问题超过20分钟,而我的Google-foo让我失望。将XML文档转换为字符串?

比方说,我在爪哇(org.w3c.dom.Document中)创建的XML文档:

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 
Document document = docBuilder.newDocument(); 

Element rootElement = document.createElement("RootElement"); 
Element childElement = document.createElement("ChildElement"); 
childElement.appendChild(document.createTextNode("Child Text")); 
rootElement.appendChild(childElement); 

document.appendChild(rootElement); 

String documentConvertedToString = "?" // <---- How? 

如何转换的文档对象转换为文本字符串?

+2

你绑成使用'org.w3c.dom'?其他DOM API(Dom4j,JDOM,XOM)使这种事情变得非常简单。 – skaffman 2010-04-02 15:26:22

public static String toString(Document doc) { 
    try { 
     StringWriter sw = new StringWriter(); 
     TransformerFactory tf = TransformerFactory.newInstance(); 
     Transformer transformer = tf.newTransformer(); 
     transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); 
     transformer.setOutputProperty(OutputKeys.METHOD, "xml"); 
     transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
     transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); 

     transformer.transform(new DOMSource(doc), new StreamResult(sw)); 
     return sw.toString(); 
    } catch (Exception ex) { 
     throw new RuntimeException("Error converting to String", ex); 
    } 
} 

您可以使用这段代码来完成你想要什么:

public static String getStringFromDocument(Document doc) throws TransformerException { 
    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); 
    return writer.toString(); 
}