检查XElement是否包含特定的子节点
本文关键字:子节点 包含特 XElement 是否 检查 | 更新日期: 2023-09-27 18:14:30
也许我做错了,但是我有一个XElement来存储像这样的XML对象
<call>
<attempted/>
<completed>
<welcomecall/>
</completed>
</call>
数据类型为XElement,存储在调用类对象call.callinformation
中。
如何解析属性内容(上面的xml)并查看completed是否包含子节点welcomecall(并非每个节点都包含)?
我试过call.callinformation.Element("completed").Element("welcomecall"
),和其他变化,但没有运气。
我试图将其分配给布尔值,如hasWelcomeCall = (code to determine if completed has this child element)
如果您不介意它是否在completed
元素中,您可以使用:
var hasWelcomeCall = call.Descendants("welcomecall").Any();
如果它可以在completed
元素中的任何一个,但你想检查它是在completed
而不是attempted
,你可以使用:
var hasWelcomeCall = call.Elements("completed").Elements("welcomecall").Any();
如果你正在使用c# 6并且只有一个completed
元素,你可以使用:
var hasWelcomeCall = call.Element("completed")?.Element("welcomecall") != null;
我相信您可以通过XPath做到这一点。
XElement call = XElement.Load("your xml");
XElement welcomeCall = call.XPathSelectElement("descendant::welcomecall");
bool hasWelcomeCall = welcomeCall != null;
关于XPathSelectElement的更多信息请点击这里