检查 xml 数据中是否存在特定节点

本文关键字:节点 存在 是否 xml 数据 检查 | 更新日期: 2023-09-27 17:55:56

我在下面给出了一个xml数据。我需要检查生产部门是否存在 empName="John" 的员工。如果存在,请更新工资,否则将员工添加到部门。

 <Company>   
    <Company Name="ABCDEF" />
    <Place="AKR" />
    <Production>
       <employee empName="John" empId="E11" salary="1000" />
       <employee empName="Ivan" empId="E12" salary="3000" />
       <employee empName="Paul" empId="E13" salary="1200" />
    </Production>
    <Marketing>
      <employee empName="Keith" empId="EMP11" />
      <employee empName="Christina" empId="EMP12" />
    </Marketing>
  </Company>

我需要使用 c# linq 检查此数据中是否存在特定节点?

检查 xml 数据中是否存在特定节点

首先更正您的 XML,

<Company>
  <Company Name="ABCDEF" />
    <Production>
    <employee empName="John" empId="E11" salary="1000" />
    <employee empName="Ivan" empId="E12" salary="3000" />
    <employee empName="Paul" empId="E13" salary="1200" />
  </Production>
  <Marketing>
    <employee empName="Keith" empId="EMP11" />
    <employee empName="Christina" empId="EMP12" />
  </Marketing>
</Company>

你可以这样尝试

    string filePaths = "XMLFile1.xml";
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(filePaths);
    XmlNodeList elements = xmlDoc.GetElementsByTagName("employee");
    Boolean found = false;
    foreach (XmlElement element in elements)
    {
        if (element.GetAttribute("empName") == "John")
        {
            found = true;
            break;
        }
    }

您的 XML 无效;您不能拥有类似 <Place="AKR" />

但是,在将其更改为有效内容后,可以尝试使用以下 LINQ 语句:

XDocument root = XDocument.Parse(File.ReadAllText("xml.xml"));
IEnumerable<XElement> production = root.Root
    .Descendants("Production")
    .Where(x => x.Elements("employee")
        .Where(e => e.Attribute("empName").Value.Equals("John"))
        .Any()
    );
if (production.Any())
{
    Console.WriteLine("John found...");
}
else
{
    Console.WriteLine("No John found");
}

试试这个:

XmlNode node = xmlDoc.SelectSingleNode(NodeName);