2014-01-30 130 views
2

尝试在下面的XML文件示例中检索Rank的值... 我传递的路径很好地利用SelectNodes方法,除了当我将属性添加到路径时该代码将跳过foreach循环C#使用XmlDocument获取XML元素值

欣赏就如何解决这个任何帮助。 此外,我正在寻找Rank元素和它的一个基于Sub ID和Rank ID的特定属性的值,因此不需要循环,但这是我知道的唯一方式。

XML文件:

<Model> 

<BookStore> 
    <Book> 
     <Sub ID="Science"> 
     <Rank ID="Chemistry">Value1</Rank> 
     <Rank ID="Physics">Value2</Rank> 
     </Sub> 
    </Book> 
</BookStore> 

</Model> 

C#代码:

var myDoc = new XmlDocument(); 
myDoc.Load(MapPath("myXML.xml")); 

XmlNodeList rankList = myDoc.SelectNodes("/Model/BookStore/Book/Sub[@ID='Science']/Rank"); // Science can be any other variable 
foreach (XmlNode myRankNode in rankList) 
{ 
    if (myRankNode.Attributes["ID"].Value.ToString() == "Physics") // Physics can be any other variable 
    { 
     myValue = myRankNode.InnerText; 
    } 

} 

回答

1

你应该能够要做到这一点:

myDoc.SelectNodes("/Model/BookStore/Book/Sub[@ID='Science']/Rank[@ID='Physics']"); 

然后确认你得到了一个结果。