你如何在 Java 中保存 DOM 文档?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/5325178/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-30 10:39:33  来源:igfitidea点击:

How do you save DOM Document in Java?

javaxmldomxpathdocument

提问by Chitresh

I am using DOMparser and XPATHto parse a my XMLfile. I have changed a value of a node in the Document Object. However when I open my XMLfile, it doesn't show me any reflection. My DOMparser code is as below :

我正在使用DOM解析器并XPATH解析我的XML文件。我已经更改了Document Object. 但是,当我打开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;
    }

How can I save my document after done with changes?

完成更改后如何保存我的文档?

Can anyone help me to resolve this?

谁能帮我解决这个问题?

回答by Lalchand

Here is the sample code for updating an XML file

这是用于更新 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();
}

回答by ZeissS

You could use the Transformer API to write your DOM to a stream or a file.

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

回答by adarshr

You have to transform the dom object into an XML using the transformer.

您必须使用转换器将 dom 对象转换为 XML。

http://download.oracle.com/javaee/1.4/tutorial/doc/JAXPXSLT4.html

http://download.oracle.com/javaee/1.4/tutorial/doc/JAXPXSLT4.html