这是当前使用的代码.
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; } }
ykaganovich.. 82
依赖DOM Level3加载/保存:
public String getStringFromDoc(org.w3c.dom.Document doc) { DOMImplementationLS domImplementation = (DOMImplementationLS) doc.getImplementation(); LSSerializer lsSerializer = domImplementation.createLSSerializer(); return lsSerializer.writeToString(doc); }
Java 7提供了另一种选择吗? (2认同)
Fernando Mig.. 13
变换器API是从DOM对象转换为序列化形式(在本例中为String)的唯一XML标准方法.作为标准,我指的是用于XML处理的 SUN Java XML API.
其他替代方法(如Xerces XMLSerializer或JDOM XMLOutputter)是更直接的方法(代码更少),但它们是特定于框架的.
在我看来,你使用的方式是最优雅,最便携的.通过使用标准XML Java API,您可以在不更改代码的情况下插入您选择的XML-Parser或XML-Transformer(与JDBC驱动程序相同).还有比这更优雅的东西吗?
依赖DOM Level3加载/保存:
public String getStringFromDoc(org.w3c.dom.Document doc) { DOMImplementationLS domImplementation = (DOMImplementationLS) doc.getImplementation(); LSSerializer lsSerializer = domImplementation.createLSSerializer(); return lsSerializer.writeToString(doc); }
变换器API是从DOM对象转换为序列化形式(在本例中为String)的唯一XML标准方法.作为标准,我指的是用于XML处理的 SUN Java XML API.
其他替代方法(如Xerces XMLSerializer或JDOM XMLOutputter)是更直接的方法(代码更少),但它们是特定于框架的.
在我看来,你使用的方式是最优雅,最便携的.通过使用标准XML Java API,您可以在不更改代码的情况下插入您选择的XML-Parser或XML-Transformer(与JDBC驱动程序相同).还有比这更优雅的东西吗?
这更简洁一点:
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这样的库:
//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());
您可以使用XOM来执行此操作:
org.w3c.dom.Document domDocument = ...; nu.xom.Document xomDocument = nu.xom.converters.DOMConverter.convert(domDocument); String xml = xomDocument.toXML();