Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用XPathJava设置节点值_Java_Xpath_Xmlnode - Fatal编程技术网

使用XPathJava设置节点值

使用XPathJava设置节点值,java,xpath,xmlnode,Java,Xpath,Xmlnode,我试图通过XPath设置节点值。我有以下内容,但它似乎没有改变实际的文件值 XPathFactory factory = XPathFactory.newInstance(); XPath xPath = factory.newXPath(); xPathExpression = "//test"; xPathValue= "111"; NodeList nodes = (NodeList) xPath.evaluate(xPathExpression, new InputSource(ne

我试图通过XPath设置节点值。我有以下内容,但它似乎没有改变实际的文件值

XPathFactory factory = XPathFactory.newInstance();
XPath xPath = factory.newXPath();

xPathExpression = "//test";
xPathValue= "111";

NodeList nodes = (NodeList) xPath.evaluate(xPathExpression, new InputSource(new FileReader(fileName)), XPathConstants.NODESET);

for (int k = 0; i < nodes.getLength(); i++)
{
    System.out.println(nodes.item(k).getTextContent());  // Prints original value
    nodes.item(k).setTextContent(xPathValue);
    System.out.println(nodes.item(k).getTextContent());  // Prints 111 after
}
XPathFactory=XPathFactory.newInstance();
XPath=factory.newXPath();
xPathExpression=“//测试”;
xPathValue=“111”;
NodeList nodes=(NodeList)xPath.evaluate(xPathExpression,newInputSource(newFileReader(fileName)),XPathConstants.NODESET);
对于(int k=0;i
但该节点的文件内容保持不变

如何设置该节点的值


谢谢

您只是在更改内存中的值,而不是文件本身中的值。您需要将修改后的文档写回文件:

Source source = new DOMSource(doc);
Result result = new StreamResult(new File(fileName));
Transformer xformer;
try {
    xformer = TransformerFactory.newInstance().newTransformer();
    xformer.transform(source, result);
} catch (TransformerConfigurationException e) {
    // TODO Auto-generated catch block
} catch (TransformerFactoryConfigurationError e) {
    // TODO Auto-generated catch block
} catch (TransformerException e) {
    // TODO Auto-generated catch block
}
这些类都来自
javax.xml.transform.*

(当然,您需要保存对文档的引用,以便可以写回文档(即,您将无法继续将其直接传递到
evaluate