2015-08-13 32 views
0

更新XML我有以下XML文件:如何使用XPath

<?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文件中的值,和我這麼做如下:

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文件中的值。

+0

也許這篇文章可以幫助你嗎? http://stackoverflow.com/questions/6124239/how-to-update-xml-using-xpath-and-java – Smudoo

+1

你把文件寫回磁盤了嗎?否則,這聽起來像你只修改了DOM(文檔的內存中表示)。 – FatalError

+0

@FatalError你能給我一個例子,如何使用xpath將該值寫回文件? – rmaik

回答

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

希望這有助於。 :)