【问题标题】:How do you save DOM Document in Java?如何在 Java 中保存 DOM 文档?
【发布时间】:2011-07-16 13:26:56
【问题描述】:

我正在使用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;
    }

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

谁能帮我解决这个问题?

【问题讨论】:

    标签: java xml dom xpath document


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-12-16
          • 2011-10-27
          • 2011-06-01
          • 1970-01-01
          • 2021-11-21
          • 1970-01-01
          • 2016-06-09
          • 2012-09-18
          相关资源
          最近更新 更多