2014-02-09 63 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有一个更简单的方法。

​​
相关问题