名前で子ノードのサブセットを選択する 質問する

名前で子ノードのサブセットを選択する 質問する

このxmlドキュメント

<listOfItem>
  <Item id="1"> 
    <attribute1 type="foo"/>
    <attribute2 type="bar"/>
    <property type="x"/>
    <property type="y"/>
    <attribute3 type="z"/>
  </Item>
  <Item>
   //... same child nodes
  </Item>
 //.... other Items
</listOfItems>

この XML ドキュメントでは、各「Item」ノードに対して、「property」子ノードのみを選択したいと思います。これを C# で直接行うにはどうすればよいでしょうか。「直接」とは、Item のすべての子ノードを選択せず​​に、1 つずつチェックすることを意味します。これまでのところ:

XmlNodeList nodes = xmldoc.GetElementsByTagName("Item");
foreach(XmlNode node in nodes)
{
   doSomething()
   foreach(XmlNode child in node.ChildNodes)
   {
     if(child.Name == "property")
     {
        doSomethingElse()
     }
   }
}

ベストアンサー1

使用できますSelectNodes(xpath)プロパティの代わりにメソッドChildNodes:

foreach(XmlNode child in node.SelectNodes("property"))
{
    doSomethingElse()
}

デモ。

おすすめ記事