java – LSSerializer vs Transformer将xml序列化为String

我必须将org.w3c.dom.Document转换成 java.lang.String.我发现了两种可能的方法,一种是使用org.w3c.dom.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();
}

解决方法

有几点需要考虑:

> LSSerializer通常被认为比变压器更快.
>然而,它在很大程度上取决于实现.基于SAX的变压器将具有良好的性能.而且有不同的实现者(Xalan,Xerces,…).
>在系统中检查哪个更好,这是非常容易的.用复杂的XML设计一个简单的测试用例.在一个循环中运行它的时间,包含时间检查(Syste.getCurrentMilliseconds或某事),你有一个答案.
>其他好的答案包括

> Is there a more elegant way to convert an XML Document to a String in Java than this code?
> https://stackoverflow.com/questions/1137488/ways-of-producing-xml-in-java

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...