如何检查一个元素是否有两个特定的child?

How to check if an element has two specific child?

如何使用 XML LINQ 进行检查?

我需要检查 parent 是否同时有 child1 和 child2。这应该 return true:

<parent>
    <child1></child1>
    <child2></child2>
</parent>

这些都是假的:

<parent>
    <child1></child1>
</parent>

<parent>
    <child2></child2>
</parent>

假设您有一个包含 root 元素和 parent 元素集合的 XML 文件,例如:

<root>
    <parent>
        <child1></child1>
        <child2></child2>
    </parent>
    <parent>
        <child1></child1>
    </parent>
    <parent>
        <child2></child2>
    </parent>
</root>

您可以使用以下代码获取同时包含一个 child1 元素和一个 child2 元素的 parents:

var xmlFile = @"[...Path to your xml file...]";

var root = XElement.Load(xmlFile);

var parents = root.Elements("parent");

var eligibleParents = parents
    .Where(p => p.Elements("child1").Count() == 1 
        && p.Elements("child2").Count() == 1);

parent 将包含:

<parent>
  <child1></child1>
  <child2></child2>
</parent>
<parent>
  <child1></child1>
</parent>
<parent>
  <child2></child2>
</parent>

eligibleParents 将包含:

<parent>
  <child1></child1>
  <child2></child2>
</parent>

表达式

p.Elements("child1").Count() == 1 
    && p.Elements("child2").Count() == 1

returns 如果 parent (p) 元素只有一个 child1 和一个 child2 子元素,则为真。