2011-08-23 53 views
0

部分:怎么知道孩子在XML文件属性的XML

<section name="header"> 
    <placeholder name="HeaderLeftPane"></placeholder> 
    <placeholder name="HeaderCenterPane"></placeholder> 
    <placeholder name="HeaderRightPane"></placeholder> 
</section> 

在页面加载我有

XmlDocument XD = new XmlDocument(); 
     XD.Load(System.Web.HttpContext.Current.Server.MapPath("Test.xml")); 
    XmlNodeList nodeListName = XD.SelectNodes("layout/child::node()"); 
     foreach (XmlNode xNode in nodeListName) 
     { 
      string name = xNode.Attributes["name"].Value; 
      int child = xNode.ChildNodes.Count; 
      LblDisplay.Text += name + child; 
      LblDisplay.Text += "<br/>"; 
     } 

结果是header3。我想捕获所有子placeholder属性name。如何能我抓住了它的帮助。

回答

0

我想你正在循环所有的placehoders,但覆盖你的变化。你需要做的是在foreach循环中添加名称列表,然后显示后面的文本框中

例如

XmlDocument XD = new XmlDocument(); 
XD.Load(System.Web.HttpContext.Current.Server.MapPath("Test.xml")); 
XmlNodeList nodeListName = XD.SelectNodes("section/placeholder"); 
IList<string> names = new List<string>(); 
foreach (XmlNode xNode in nodeListName) 
{ 
    string name = xNode.Attributes["name"].Value; 
    int child = xNode.ChildNodes.Count; 
    names.Add(name); 
} 

显示属性此

string nameString = string.Empty; 
foreach (string name in names) 
{ 
    nameString += name + " "; 
} 

LblDisplay.Text = nameString; 
+0

感谢状为了快速回复。我的意思是说,我只能够计数的孩子节点,但无法赶上那里attrributes name.in上面我想要显示'HeaderLeftPane'' HeaderCenterPane'' HeaderRightPane'在lblDisplay.Any的想法。 –

+0

好的,看看上面的代码有帮助吗? – Bobby

1
 XmlDocument XD = new XmlDocument(); 
     XD.Load(System.Web.HttpContext.Current.Server.MapPath("Test.xml")); 

     XmlNodeList listChildNodes = XD.SelectNodes("//*[name()='placeholder']"); 

     List<string> names = new List<string>(listChildNodes.Count); 
     foreach (XmlNode nodeChild in listChildNodes) 
     { 
      names.Add(nodeChild.Attributes["name"].InnerText); 
     } 

     Console.WriteLine(string.Join(";", names.ToArray()));