检查是否存在具有特定值的XElement
本文关键字:XElement 是否 存在 检查 | 更新日期: 2023-09-27 18:08:13
例如以下XML
<Tree>
<Order>
<Phone>1254</Phone>
<City>City1</City>
<State>State</State>
</Order>
<Order>
<Phone>765</Phone>
<City>City2</City>
<State>State3</State>
</Order>
</Tree>
我可能想知道XElement"Tree
"是否在其"City
"子节点中包含值为"City2"的"Order
"节点。
下面的代码返回XElement City是否存在,但不检查它的值,我如何更新它以满足我的请求?
bool exists = Tree.Elements("Order").Elements("City").Any();
有一个接受谓词的Any
过载,所以你只需要使用它:
bool exists = Tree.Elements("Order")
.Elements("City")
.Any(x => x.Value == "City2");
或者,在Any
之前使用Where
:
bool exists = Tree.Elements("Order")
.Elements("City")
.Where(x => x.Value == "City2")
.Any();
基本上,只要记住你已经拥有了LINQ to Objects的全部功能
使用xpath简单多了
var xml=@"<Tree> <Order> <Phone>1254</Phone> <State>State</State> </Order> <Order> <Phone>765</Phone> <City>City2</City> <State>State3</State> </Order> </Tree>";
XElement root=XElement.Parse(xml); //XElement.Load(xmlfile);
var child=root.XPathSelectElements("//Order/City[text()='City2']");
请包括
using System.Xml.XPath;