2014-02-09 95 views
-2

我有以下XML文件:如何訪問內部XML標籤?

<ChangeInfo > 
    <Overview name="UML1" > 
     <Property name="actor1" value="1" /> 
     <Overview name="UML2" > 
      <Property name="actor2" value="2" />  
     </Overview> 
    </Overview> 
</ChangeInfo> 

,我嘗試下面的C#代碼到達主節點內的所有嵌套節點: 我想訪問<Overview name="UML2">及其子女。

我的代碼:

XmlDocument doc = new XmlDocument(); 
doc.Load(@"C:\Users\Administrator\Downloads\xxml\xxml\xml_file\uml.xml"); 
XmlNode targets = doc.SelectSingleNode("/ChangeInfo/Overview"); 
IEnumerator s = targetlist.GetEnumerator(); 
while (s.MoveNext()) 
{ 
    XmlNode x = (XmlNode)(s.Current); 
    XmlNodeList ch = x.ChildNodes; 

    for (int i = 0; i < ch.Count; i++) 
    { 
     String att = ""; 
     if (ch[i].Attributes != null) 
     { 
      for (int j = 0; j < ch[i].Attributes.Count; j++) 
      { 
       att += " "+ch[i].Attributes[j].Name + " " + ch[i].Attributes[j].Value; 
      } 
      textBox1.Text += "\r\n" + att ; 
     } 
    } 
} 

,但我仍然無法訪問<Overview name="UML2" >及其子<Property name="actor2" value="2" />

+2

你想要完成什麼? –

回答

0

我沒有C#的人,但我用Google搜索 'C#的XPath',發現以下頁面:http://support.microsoft.com/kb/308333

您可以使用以下XPath去,你需要的XmlNode:

//Overview[@name/string() = 'UML2'] 

XPathNavigator nav; 
XPathDocument docNav; 
XPathNodeIterator NodeIter; 
String strExpression; 
// Open the XML. 
docNav = new XPathDocument(@"C:\Users\Administrator\Downloads\xxml\xxml\xml_file\uml.xml"); 
// Create a navigator to query with XPath. 
nav = docNav.CreateNavigator(); 
strExpression = "//Overview[@name/string() = 'UML2']"; 
NodeIter = nav.Select(strExpression); 

我希望這可以幫助。

1

羅蘭是正確的。

但今天的現代.net有一個更簡單的方法。

​​
相關問題