2011-08-23 52 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()));