2012-02-01 78 views
2
var xml= @"<?xml version='1.0'?> 
       <bookstore> 
       <book genre=""3""> 
        <title>The Gorgias3</title> 
        <author> 
        <name>Plato3</name> 
        </author> 
        <price>3</price> 
       </book> 
      <book genre=""4""> 
        <title>The Gorgias4</title> 
        <author> 
        <name>Plato4</name> 
        </author> 
        <price>4</price> 
       </book> 
      </bookstore>"; 



XPathDocument docNav = new XPathDocument(new StringReader(xml)); 
XPathNavigator navigator = docNav.CreateNavigator(); 
XPathNodeIterator NodeIter = navigator.Select("/bookstore/book/title"); 

foreach (XPathNavigator selectedNode in NodeIter) 
{ 
    Console.WriteLine(selectedNode.Name); 
} 

我如何直接訪問第一個/bookstore/book/title"孩子並獲得他的價值。只獲取XPathNavigator的第一個值?

我不想重複,並打破循環

結果應該是"The Gorgias3"

附:我不想用第一個過濾器修改xpath表達式。

我想知道我可以用c#來做到這一點。

+0

哪些方面你要問的問題嗎? - a)知道'第一個孩子'將成爲一個標題 - b)以這種方式,你可以指定第一個孩子是什麼(即標題,作者,...) - 我問,因爲何時我檢查你的xml我的想法,沒有其他的信息將是'第一個孩子'實際上是,並說這個孩子有上面列出的孩子...... – Hardryv 2012-02-01 15:30:33

+0

@hardryv謝謝編輯。 – 2012-02-01 15:38:42

+0

它的迭代器不能僅僅被轉換爲節點並被使用? – 2012-02-01 15:31:59

回答

4

用途:

var node = navigator.SelectSingleNode("/bookstore/book/title"); 

Console.WriteLine(node); 
+0

爲什麼navigator.Select(「/ bookstore/book [1]/title [1]」);不是wrk? – 2012-02-01 15:48:59

+0

@RoyiNamir,爲什麼?有用。它返回實現了'IEnumerable'的'XPathNodeIterator'。所以它返回1個IEnumerable。 – 2012-02-01 17:37:19

+0

對不起不知道爲什麼我認爲我看到它不工作。 – 2012-02-01 17:56:24