2011-03-01 32 views
1
<Root> 
<person name="Tom"> 
    <Car name="car1" /> 
    <Car name="car2" /> 
</Person> 
<Person name="Sally"> 
<Car name="car3" /> 
    <Car name="car4" /> 
</person> 
</Root> 

我正在使用SelectNodes()方法遍歷。不過,我有兩個級別的麻煩,以獲得所有車輛的名稱。Xmldocument中的迭代

var people = Xmldoc.SelectNodes("/Root/Person"); 
foreach (XmlNode person in people) 
{ 
    var cars = person.SelectNodes("/Car"); 
    foreach(XmlNode car in cars) 
    { 
     //get the name of the car 
    } 
} 

聲明person.SelectNodes("/Car")不返回任何結果。

回答

0

你在你的第二個XPath缺少.(點),
即改變你的行這樣的:

person.SelectNodes("./Car"); 

意味着你要查詢當前節點(即人節點)。沒有它,你正在查詢整個文檔。

1

試試這個

var people = Xmldoc.SelectNodes("/Root/Person"); 
foreach (XmlNode person in people) 
{ var cars = person.ChildNodes;  
    foreach(XmlNode car in cars)  
    {  //get the name of the car  } 
} 
的/從你的XPath