LSSerializer vs Transformer用于将xml序列化为String

Joh*_*ick 12 java xml dom

我必须将org.w3c.dom.Document转换为java.lang.String.我找到了两种可能的方法,一种使用org.w3c.dom.ls.ls.LSSerializer,另一种使用javax.xml.transform.Transformer.我有下面的样品.

谁能告诉我哪种方法更受青睐?

public String docToStringUsingLSSerializer(org.w3c.dom.Document doc) {
    DOMImplementationRegistry reg = DOMImplementationRegistry.newInstance();
    DOMImplementationLS impl = (DOMImplementationLS) reg.getDOMImplementation("LS");
    LSSerializer serializer = impl.createLSSerializer();
    return serializer.writeToString(doc);
}

public String docToStringUsingTransformer(org.w3c.dom.Document doc) {
    Transformer transformer = TransformerFactory.newInstance().newTransformer();
    StringWriter stw = new StringWriter();  
    transformer.transform(new DOMSource(doc), new StreamResult(stw));  
    return stw.toString();
}
Run Code Online (Sandbox Code Playgroud)

Ome*_*Ziv 5

有几点需要考虑:

  1. LSSerializer通常被认为比Transformer
  2. 尽管如此,它在很大程度上取决于实现。一个变压器基于 SAX将具有良好的性能。并且有不同的实现者(Xalan、Xerces 等)。
  3. 很容易检查您的系统中哪个更好。使用复杂的 XML 设计一个简单的测试用例。在数千个时间循环中运行它,用时间检查(Syste.getCurrentMilliseconds 或其他东西)包装它,你就得到了答案。
  4. 其他不错的答案包括: