2012-02-15 87 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个节点的所有子节点。