Is there a more elegant way to convert an XML Document to a String in Java than this code?

后端 未结 4 1696
轮回少年
轮回少年 2020-11-29 18:42

Here is the code currently used.

public String getStringFromDoc(org.w3c.dom.Document doc)    {
        try
        {
           DOMSource domSource = new DOM         


        
相关标签:
4条回答
  • 2020-11-29 19:18

    You could use XOM to perhaps do this:

    org.w3c.dom.Document domDocument = ...;
    nu.xom.Document xomDocument = 
        nu.xom.converters.DOMConverter.convert(domDocument);
    String xml = xomDocument.toXML();
    
    0 讨论(0)
  • 2020-11-29 19:23

    The transformer API is the only XML-standard way to transform from a DOM object to a serialized form (String in this case). As standard I mean SUN Java XML API for XML Processing.

    Other alternatives such as Xerces XMLSerializer or JDOM XMLOutputter are more direct methods (less code) but they are framework-specific.

    In my opinion the way you have used is the most elegant and most portable of all. By using a standard XML Java API you can plug the XML-Parser or XML-Transformer of your choice without changing the code(the same as JDBC drivers). Is there anything more elegant than that?

    0 讨论(0)
  • 2020-11-29 19:24

    This is a little more concise:

    try {
        Transformer transformer = TransformerFactory.newInstance().newTransformer();
        StreamResult result = new StreamResult(new StringWriter());
        DOMSource source = new DOMSource(doc);
        transformer.transform(source, result);
        return result.getWriter().toString();
    } catch(TransformerException ex) {
        ex.printStackTrace();
        return null;
    }
    

    Otherwise you could use a library like XMLSerializer from Apache:

    //Serialize DOM
    OutputFormat format    = new OutputFormat (doc); 
    // as a String
    StringWriter stringOut = new StringWriter ();    
    XMLSerializer serial   = new XMLSerializer (stringOut,format);
    serial.serialize(doc);
    // Display the XML
    System.out.println(stringOut.toString());
    
    0 讨论(0)
  • 2020-11-29 19:43

    Relies on DOM Level3 Load/Save:

    public String getStringFromDoc(org.w3c.dom.Document doc)    {
        DOMImplementationLS domImplementation = (DOMImplementationLS) doc.getImplementation();
        LSSerializer lsSerializer = domImplementation.createLSSerializer();
        return lsSerializer.writeToString(doc);   
    }
    
    0 讨论(0)
提交回复
热议问题