遇到需要将几个W3C标准的Document文档简单合并,一个主文档,其他的文档并列按照顺序放在主文档的孩子节点上就行了。。。
-
public static void combinDocument(Document root,List<Document> targets){
-
for(Document d:targets){
-
root.getFirstChild().appendChild(
-
root.adoptNode(d.getDocumentElement()));
-
}
-
}
为了便于调试,需要将合并的文档格式化输出,其中主要遇到了缩进的问题。找到个属性,设置下搞定。
-
public static String toString(Document doc) throws TransformerFactoryConfigurationError, TransformerException{
-
DOMSource source = new DOMSource(doc);
-
StringWriter writer = new StringWriter();
-
Result result = new StreamResult(writer);
-
Transformer transformer = TransformerFactory.newInstance().newTransformer();
-
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
-
transformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, "yes");
-
<span style="color: #ff0000;">transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");</span>
-
transformer.transform(source, result);
-
return (writer.getBuffer().toString());
-
}