搜索

2009-09-22 22 views
2

想這是XML:搜索

<lib> 
<books type="paperback" name="A" /> 
<books type="pdf" name="B" /> 
<books type="hardbound" name="A" /> 
</lib> 

會是怎樣的XPath的代碼,搜索類型=「簡裝」和名稱=「A」的書嗎? TIA。

目前我的代碼看起來是這樣的:

import org.w3c.dom.*; 
import javax.xml.xpath.*; 
import javax.xml.parsers.*; 
import java.io.IOException; 
import org.xml.sax.SAXException; 

public class demo { 

    public static void main(String[] args) 
    throws ParserConfigurationException, SAXException, 
      IOException, XPathExpressionException { 

    DocumentBuilderFactory domFactory = 
    DocumentBuilderFactory.newInstance(); 
      domFactory.setNamespaceAware(true); 
    DocumentBuilder builder = domFactory.newDocumentBuilder(); 
    Document doc = builder.parse("xml.xml"); 
    XPath xpath = XPathFactory.newInstance().newXPath(); 
     // XPath Query for showing all nodes value 
    String version="fl1.0"; 
    XPathExpression expr = xpath.compile("//books/type[@input="paperback"]/text()"); 

    Object result = expr.evaluate(doc, XPathConstants.NODESET); 
    NodeList nodes = (NodeList) result; 
    for (int i = 0; i < nodes.getLength(); i++) { 
    System.out.println(nodes.item(i).getNodeValue()); 
    } 
    } 
} 
+0

'xpath.compile(「// books/type [@ input =」paperback「]/text()」)'也是無效的Java。 – 2009-09-22 06:48:45

+0

悲傷但真實:Java是框架最依賴XML的語言,但它最不適合處理XML。 – 2009-09-22 06:51:09

+0

是的,雖然你可以添加'<?xml version =「1.0」?>'。 – 2009-09-22 07:33:02

回答

2
/lib/books[@type='paperback' and @name='A'] 

看一看here,如果你與XPath語法掙扎,它有幾個很好的例子。

另外,如果你只需要在一般及相關技術XML幫助,看看導向here

+0

@Fiona:我經歷了代碼,但仍有點困惑。如果我需要搜索「平裝書」並檢索相應的名稱,你能告訴我相同的代碼嗎? – fixxxer 2009-09-22 07:38:21

+0

/lib/books [@ type ='paperback']/@ name – flybywire 2009-09-22 07:40:30

+0

One more, 由於上述XML中的每個標記的type屬性都不相同。我們可以將Type中的值保存在String變量中並將其替換爲xpath搜索變量中的值嗎? – fixxxer 2009-09-22 07:48:36

0

現在你似乎尋找類似<book><type input="paperback"/></book>這顯然是錯誤的。你的XPath表達式也許應該像//書[@類型= 「簡裝」 和@ NAME = 「A」] /文()

+0

由於'books'元素沒有conente,所以'text()'不會給你任何東西。 – 2009-09-22 06:46:59

+0

謝謝大家誰貢獻了這個線程。 – fixxxer 2009-09-22 08:27:07

0

以上的回答都不錯... ...我想貢獻資源。我見過的最好的xpath教程是here