首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用XPath和Java更新XML

如何使用XPath和Java更新XML
EN

Stack Overflow用户
提问于 2011-05-25 20:09:29
回答 6查看 70.6K关注 0票数 29

我有一个XML文档,以及该文档的XPath表达式。我必须在运行时使用XPath更新文档。

我如何使用Java来做这件事?

下面是我的xml:

代码语言:javascript
复制
<?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的值。

EN

回答 6

Stack Overflow用户

发布于 2015-09-21 13:46:25

您可以删除该文件并创建一个新文件。

代码语言:javascript
复制
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")));
票数 6
EN

Stack Overflow用户

发布于 2011-05-25 20:17:41

XPath用于选择XML的一部分,document.It不支持更新。但是,由于它返回DOM对象(元素,如果内存有效,或者可能是节点),因此您可以使用DOM方法来更改文档。

票数 4
EN

Stack Overflow用户

发布于 2011-05-25 21:22:57

考虑使用XQuery更新而不是XPath。这使您可以编写

代码语言:javascript
复制
replace value of node //PersonList/Person[2]/Name with "Anonymous"

这比使用Java DOM API容易得多。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6124239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档