以下是当前使用的代码。
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;
}
}
发布于 2008-11-24 21:58:56
public String getStringFromDoc(org.w3c.dom.Document doc) {
DOMImplementationLS domImplementation = (DOMImplementationLS) doc.getImplementation();
LSSerializer lsSerializer = domImplementation.createLSSerializer();
return lsSerializer.writeToString(doc);
}
发布于 2008-11-24 21:35:39
转换器API是从DOM对象转换为序列化形式(本例中为字符串)的惟一XML标准方法。作为标准,我指的是SUN Java XML API for XML Processing。
其他替代方法,如Xerces、XMLSerializer或JDOM XMLOutputter是更直接的方法(代码更少),但它们是特定于框架的。
在我看来,你所使用的方式是所有方式中最优雅和最便携的。通过使用标准的XML Java API,您可以随意插入XML-Parser或XML-Transformer,而无需更改代码(与JDBC驱动程序相同)。还有比这更优雅的吗?
发布于 2008-11-24 21:37:05
这是更简洁的描述:
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());
https://stackoverflow.com/questions/315517
复制相似问题