如何用Java保存DOM文档?

如何用Java保存DOM文档?,java,xml,dom,xpath,document,Java,Xml,Dom,Xpath,Document,我正在使用DOM解析器和XPATH解析我的XML文件。我已更改了文档对象中节点的值。但是,当我打开XML文件时,它不会显示任何反射。我的DOM解析器代码如下: private void setPortNumber(int portNumber) { try { Document parsedDocument = parseDocument(tempPath + "/apache-6/conf/server.xml"); XPath xPath =

我正在使用
DOM
解析器和
XPATH
解析我的
XML
文件。我已更改了
文档对象
中节点的值。但是,当我打开
XML
文件时,它不会显示任何反射。我的
DOM
解析器代码如下:

private void setPortNumber(int portNumber) {
        try {
        Document parsedDocument = parseDocument(tempPath + "/apache-6/conf/server.xml");
        XPath xPath = XPathFactory.newInstance().newXPath();
        XPathExpression expr;
        expr = (XPathExpression) xPath.compile("//Connector");
        Object result = expr.evaluate(parsedDocument, XPathConstants.NODESET);
        NodeList nodes = (NodeList) result;
        for (int i = 0; i < nodes.getLength(); i++) {
            Node node =nodes.item(i);
            NamedNodeMap attributes = node.getAttributes();
            for(int j=0; j< attributes.getLength(); j++){
                String value = attributes.item(j).getNodeValue();
                if(value.equals("HTTP/1.1")){
                    Node valueNode = attributes.item(0);
                    valueNode.setNodeValue(portNumber+"");
                }
            }
        }
        } catch (XPathExpressionException e) {}
    }
    private Document parseDocument(String xmPath) {
        Document doc = null;
        try {
            DocumentBuilderFactory domFactory = 
                DocumentBuilderFactory.newInstance();
            DocumentBuilder builder;

            builder = domFactory.newDocumentBuilder();

            doc = builder.parse(xmPath);
        }catch (Exception e) {}
        return doc;
    }
private void setPortNumber(int-portNumber){
试一试{
Document parsedDocument=parseDocument(tempPath+“/apache-6/conf/server.xml”);
XPath=XPathFactory.newInstance().newXPath();
xpathexpressionexpr;
expr=(XPathExpression)xPath.compile(“//连接器”);
Object result=expr.evaluate(parsedDocument,XPathConstants.NODESET);
节点列表节点=(节点列表)结果;
对于(int i=0;i
更改完成后如何保存文档


有人能帮我解决这个问题吗?

您可以使用Transformer API将DOM写入流或文件。

您必须使用Transformer将DOM对象转换为XML


以下是更新XML文件的示例代码

try
{
  DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
  DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
  Document doc = docBuilder.parse(filePath);
  Node rootNode = doc.getFirstChild();//for getting the root node

  String expersion="books/author";//x-path experssion

  XPathFactory factory = XPathFactory.newInstance();
  XPath xpath = factory.newXPath();
  XPathExpression expr = xpath.compile(expersion);
  Node updateNode=null;
  Object result = expr.evaluate(doc, XPathConstants.NODESET);
  NodeList nodes = (NodeList) result;
  updateNode=nodes.item(0);
  updateNode.appendChild(doc.createCDATASection("new value"));
  TransformerFactory transformerFactory = TransformerFactory.newInstance();
  Transformer transformer = transformerFactory.newTransformer();
  DOMSource source = new DOMSource(doc);
  StreamResult streamResult =  new StreamResult(new File(filePath));
  transformer.transform(source, streamResult);
}
catch (Exception e) {
  e.printStackTrace();
}