如何使用xPath更新xml

时间:2015-08-13 14:11:14

标签: java xml xpath sax stax

我有以下xml文件:

<?xml version='1.0' encoding='utf-8' ?>
<osm>
<node id="25779111" lat="50.03342" lon="5.461545"/>
<node id="25779112" lat="50.03304" lon="5.814"/>
<node id="25779119" lat="50.03395" lon="5.8255"/>
<tag k="maxspeed" v="30"/>
<tag k="maxspeed:zone" v="yes"/>
<ele k="maxspeed:zone" v="60"/>

我回顾了一些帖子,知道如何使用xpath更新或更改xml文件中的值,并idid以下内容:

for (int i = 1 ; i <= 2; i++) {
    String expr0 = "//node[@lat='53.0334062'][@lon='8.8461545']/following-sibling::tag["+i+"]/@v";
    xPath.compile(expr0);
    Node s = (Node) xPath.evaluate(expr0, document, XPathConstants.NODE);
    System.out.println(s);

    s.setNodeValue("999");
}

但是当我检查xml文件时,我希望看到写入的更改,但没有变化。 请告诉我如何正确使用xPath更改xml文件中的值。

1 个答案:

答案 0 :(得分:0)

您需要将文档写回磁盘。以下是:

  TransformerFactory transformerFactory = TransformerFactory.newInstance();
  Transformer transformer = transformerFactory.newTransformer();
  DOMSource source = new DOMSource(document);
  String filePath = "path/to/new/file.xml";
  StreamResult streamResult =  new StreamResult(new File(filePath));
  transformer.transform(source, streamResult);

此处提供更多帮助:http://download.oracle.com/javaee/1.4/tutorial/doc/JAXPXSLT4.html

希望这会有所帮助。 :)