2014-02-19 66 views
1

我需要知道,如果在java中使用XPath,我可以在查詢結果中獲得XML片段。我會更好地解釋,我的工作哦,這簡單的XML文件:評估排除xml標記的XPath查詢

<bookshelf> 
    <shelf> 
     <book> 
      <author>J.R.R. Tolkien</author> 
      <title>The Lord of the Rings</title> 
     </book> 
    </shelf> 
</bookshelf> 

查詢的XPath我要評價是:/bookshelf/shelf/book

我需要找到一種方法來保持XML標記中的XPath響應得到一個結果類似如下:

<author>J.R.R. Tolkien</author> 
<title>The Lord of the Rings</title> 

可以做到這一點?

+0

只需搜索'/ bookshelf/shelf/book/*'。 –

回答

0

是的,這是可能的使用標準Java的XPath API:

import javax.xml.xpath.XPath; 
import javax.xml.xpath.XPathConstants; 
import javax.xml.xpath.XPathFactory; 

import org.w3c.dom.NodeList; 
import org.xml.sax.InputSource; 

public class Snippet { 
    public static void main(String[] args) throws Exception { 
     XPath xpath = XPathFactory.newInstance().newXPath(); 
     NodeList nodes = (NodeList) xpath.evaluate("/bookshelf/shelf/book/*", 
       new InputSource(Snippet.class.getResourceAsStream("/books.xml")), 
       XPathConstants.NODESET); 
     System.out.println("First node: " + nodes.item(0)); 
     System.out.println("Second node: " + nodes.item(1)); 
    } 
} 

你可以要求的XPath API返回節點列表,單個節點,字符串等使用最後一個參數evaluate方法爲:見XPathConstants類。

+0

感謝您的快速回答,還有一件事:我如何在列表中添加我在評估中獲得的節點? – Giacomo