您可以将节点转换为字符串,然后将此字符串保存到
.xml文件中。
将节点转换为字符串
下面的方法会将节点转换为xml字符串。这是仅JDK的解决方案,不需要依赖项。
import org.w3c.dom.Node;import org.w3c.dom.NodeList;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import javax.xml.xpath.XPath;import javax.xml.xpath.XPathConstants;import javax.xml.xpath.XPathexpression;import javax.xml.xpath.XPathexpressionException;import javax.xml.xpath.XPathFactory;import java.io.StringWriter;public static String toString(Node node, boolean omitXmlDeclaration, boolean prettyPrint) { if (node == null) { throw new IllegalArgumentException("node is null."); } try { // Remove unwanted whitespaces node.normalize(); XPath xpath = XPathFactory.newInstance().newXPath(); XPathexpression expr = xpath.compile("//text()[normalize-space()='']"); NodeList nodeList = (NodeList)expr.evaluate(node, XPathConstants.NODESET); for (int i = 0; i < nodeList.getLength(); ++i) { Node nd = nodeList.item(i); nd.getParentNode().removeChild(nd); } // Create and setup transformer Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); if (omitXmlDeclaration == true) {transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); } if (prettyPrint == true) {transformer.setOutputProperty(OutputKeys.INDENT, "yes");transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); } // Turn the node into a string StringWriter writer = new StringWriter(); transformer.transform(new DOMSource(node), new StreamResult(writer)); return writer.toString(); } catch (TransformerException e) { throw new RuntimeException(e); } catch (XPathexpressionException e) { throw new RuntimeException(e); }}


