C# 检查xml数据中是否存在特定节点
下面给出了一个xml数据。我需要检查生产部门是否有empName=“John”的员工。如果存在,则更新薪资,否则将员工添加到部门C# 检查xml数据中是否存在特定节点,c#,linq,linq-to-xml,xelement,C#,Linq,Linq To Xml,Xelement,下面给出了一个xml数据。我需要检查生产部门是否有empName=“John”的员工。如果存在,则更新薪资,否则将员工添加到部门 <Company> <Company Name="ABCDEF" /> <Place="AKR" /> <Production> <employee empName="John" empId="E11" salary="1000" /> <em
<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>
试试这个:
XmlNode node = xmlDoc.SelectSingleNode(NodeName);
您的XML无效;您不能有像
但是,在将其更改为有效内容后,可以尝试使用以下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");
}
XDocument root=XDocument.Parse(File.ReadAllText(“xml.xml”));
IEnumerable production=root.root
.后代(“生产”)
其中(x=>x.Elements(“员工”)
其中(e=>e.Attribute(“empName”).Value.Equals(“John”))
.Any()
);
if(production.Any())
{
Console.WriteLine(“约翰找到了…”);
}
其他的
{
控制台。WriteLine(“未找到John”);
}
您的XML未经验证;你不能有这样一个节点,答案是否有用?你设法解决了这个问题吗?请更新此SO项目;也许你可以检查其中一个答案为“正确”。。。
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");
}