有没有比此代码更优雅的方式将 XML 文档转换为 Java 中的字符串?

2022-08-31 13:59:30

下面是当前使用的代码。

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;
        }
    }

答案 1

依赖于 DOM 级别 3 加载/保存

public String getStringFromDoc(org.w3c.dom.Document doc)    {
    DOMImplementationLS domImplementation = (DOMImplementationLS) doc.getImplementation();
    LSSerializer lsSerializer = domImplementation.createLSSerializer();
    return lsSerializer.writeToString(doc);   
}

答案 2

转换器 API 是从 DOM 对象转换为序列化形式(在本例中为 String)的唯一 XML 标准方法。作为标准,我的意思是用于XML处理的SUN Java XML API

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

在我看来,您使用的方式是最优雅,最便携的。通过使用标准的 XML Java API,您可以插入您选择的 XML 解析器或 XML 变压器,而无需更改代码(与 JDBC 驱动程序相同)。还有比这更优雅的吗?


推荐