首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中,有比下面的代码更好的将XML文档转换为字符串的方法吗?

在Java中,有比下面的代码更好的将XML文档转换为字符串的方法吗?
EN

Stack Overflow用户
提问于 2008-11-24 21:21:30
回答 4查看 73.8K关注 0票数 70

以下是当前使用的代码。

代码语言:javascript
复制
public String getStringFromDoc(org.w3c.dom.Document doc)    {
        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);
           writer.flush();
           return writer.toString();
        }
        catch(TransformerException ex)
        {
           ex.printStackTrace();
           return null;
        }
    }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-11-24 21:58:56

依赖于DOM Level3 Load/Save

代码语言:javascript
复制
public String getStringFromDoc(org.w3c.dom.Document doc)    {
    DOMImplementationLS domImplementation = (DOMImplementationLS) doc.getImplementation();
    LSSerializer lsSerializer = domImplementation.createLSSerializer();
    return lsSerializer.writeToString(doc);   
}
票数 85
EN

Stack Overflow用户

发布于 2008-11-24 21:35:39

转换器API是从DOM对象转换为序列化形式(本例中为字符串)的惟一XML标准方法。作为标准,我指的是SUN Java XML API for XML Processing

其他替代方法,如Xerces、XMLSerializer或JDOM XMLOutputter是更直接的方法(代码更少),但它们是特定于框架的。

在我看来,你所使用的方式是所有方式中最优雅和最便携的。通过使用标准的XML Java API,您可以随意插入XML-Parser或XML-Transformer,而无需更改代码(与JDBC驱动程序相同)。还有比这更优雅的吗?

票数 13
EN

Stack Overflow用户

发布于 2008-11-24 21:37:05

这是更简洁的描述:

代码语言:javascript
复制
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;
}

否则,您可以使用来自Apache的XMLSerializer这样的库:

代码语言:javascript
复制
//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());
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/315517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档