检查 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,
<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);