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

时间:2011-11-30 09:26:21

标签: 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();
}

1 个答案:

答案 0 :(得分:4)

有几点需要考虑:

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