检查特定的xml节点是否存在

时间:2017-09-17 08:15:34

标签: c# xml

我正在尝试检查节点" DEF"存在于我的xml文件中

我的xml文件如下所示:

<Struct>
   <A>
      <ABC>
      </ABC>
      <DEF>
      </DEF>
   </A>
   <B>
      <GHI>
      </GHI>
   </B>
</Struct>

我的代码看起来像这样:

XmlDocument stru = new XmlDocument();
stru.Load(path + "Structure.xml");
if (stru.ChildNodes[0].HasChildNodes)
{
    for (int i = 0; i < stru.ChildNodes[0].ChildNodes.Count; i++)
    {
        if (stru.ChildNodes[0].ChildNodes[i].Attributes["DEF"] != null)
        {
            enabled = true;
            break;
        }
        else
        {
            MessageBox.Show("no");
        }

    }
}
else { MessageBox.Show("Error!"); }

它会立即显示消息框,其中包含&#34;错误!&#34;在其中

1 个答案:

答案 0 :(得分:1)

将linq用于带Descendants的xml:

  

按文档顺序返回此文档或元素的后代元素的筛选集合。只有具有匹配XName的元素才会包含在集合中。(继承自XContainer。)

var abcs = XDocument.Load("data.xml").Descendants("ABC");
if(abcs.Any())
{
    // There is at least one element of "ABC"
}