我有一个XML文档,以及该文档的XPath表达式。我必须在运行时使用XPath更新文档。
我如何使用Java来做这件事?
下面是我的xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<PersonList>
<Person>
<Name>Sonu Kapoor</Name>
<Age>24</Age>
<Gender>M</Gender>
<PostalCode>54879</PostalCode>
</Person>
<Person>
<Name>Jasmin</Name>
<Age>28</Age>
<Gender>F</Gender>
<PostalCode>78745</PostalCode>
</Person>
<Person>
<Name>Josef</Name>
<Age>232</Age>
<Gender>F</Gender>
<PostalCode>53454</PostalCode>
</Person>
</PersonList>
我必须在//PersonList/Person[2]/Name
下更改name和age的值。
发布于 2015-09-21 13:46:25
您可以删除该文件并创建一个新文件。
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(
new InputSource("data.xml"));
XPath xpath = XPathFactory.newInstance().newXPath();
NodeList nodes = (NodeList) xpath.evaluate("//employee/name[text()='old']", doc,
XPathConstants.NODESET);
for (int idx = 0; idx < nodes.getLength(); idx++) {
nodes.item(idx).setTextContent("new value");
}
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.transform(new DOMSource(doc), new StreamResult(new File("data_new.xml")));
发布于 2011-05-25 20:17:41
XPath用于选择XML的一部分,document.It不支持更新。但是,由于它返回DOM对象(元素,如果内存有效,或者可能是节点),因此您可以使用DOM方法来更改文档。
发布于 2011-05-25 21:22:57
考虑使用XQuery更新而不是XPath。这使您可以编写
replace value of node //PersonList/Person[2]/Name with "Anonymous"
这比使用Java DOM API容易得多。
https://stackoverflow.com/questions/6124239
复制相似问题