gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 02:48:43 24 4
gpt4 key购买 nike

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

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

谁能帮我解决这个问题?

最佳答案

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

关于java - 你如何在 Java 中保存 DOM 文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5325178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com