2012-02-15 86 views
2

我有這樣的XML:使用XPath讀取XML

<?xml version="1.0" encoding="utf-8" ?> 
<bookstore> 
    <book id="ISBN-NUMBER"> 
    <title> 
     The Autobiography of Benjamin Franklin 
    </title> 
    <author type="major"> 
     <first-name> 
     Benjamin 
     </first-name> 
     <last-name> 
     Franklin 
     </last-name> 
    </author> 
    <price> 
     8.99 
    </price> 
    </book> 
    <book id="ISBN-NUMBER"> 
    <title> 
     The Confidence Man 
    </title> 
    <author type="major"> 
     <first-name> 
     Herman 
     </first-name> 
     <last-name> 
     Melville 
     </last-name> 
    </author> 
    <price> 
     11.99 
    </price> 
    </book> 
    <book id="ISBN-NUMBER"> 
    <title> 
     The Gorgias 
    </title> 
    <author type="major"> 
     <name> 
     Plato 
     </name> 
    </author> 
    <price> 
     9.99 
    </price> 
    </book> 
</bookstore> 

我如何使用XPath看了嗎?我用過:

XPathDocument doc = new XPathDocument(stream); 
XPathNavigator nav = doc.CreateNavigator(); 
XPathNodeIterator node = nav.Select("bookstore/book"); 

while (node.MoveNext()) 

但是我該如何從這裏繼續?如果節點是標題,作者和價格,我想我需要一個swtich語句。如果書,那麼我需要閱讀書籍ID,作者和類型相同。

+4

在等待一個答案接受前面的問題的一些答案 – rene 2012-02-15 12:31:29

+0

它看起來像你讀這個例子 - http://support.microsoft.com/kb/308333;它解釋瞭如何取得書籍節點,但不解釋如何選擇子屬性 - 示例http://msdn.microsoft.com/en-us/library/system.xml.xpath.xpathnavigator.select(v = vs.71).aspx包含此信息。 – dash 2012-02-15 12:58:19

+0

你忘記告訴我們最重要的事情:你的任務是什麼?您想要選擇哪個XML文檔的哪些節點?請編輯問題並添加這個缺少的重要信息。 – 2012-02-15 13:45:24

回答

2

您可以使用node.Select('//title')來獲得標題,我想。我不知道這是如何工作在C#中,但常見的xpaths如下所示

  • //bokstore/book選擇書籍節點。
  • //bookstore/book/title選擇標題節點
  • //bookstore/book[n]/*選擇所有第n個節點的所有子節點。