也许我错了,但我有一个XElement存储像这样的XML对象
<call>
<attempted/>
<completed>
<welcomecall/>
</completed>
</call>
它存储在调用类对象 - call.callinformation
中,数据类型为XElement。
如何解析属性内容(上面的xml)并查看complete是否包含子节点welcomecall(不是每个人都会)?
我尝试了call.callinformation.Element("completed").Element("welcomecall"
)和其他变体,但没有运气。
我正在尝试将其分配给布尔值,例如hasWelcomeCall = (code to determine if completed has this child element)
答案 0 :(得分:3)
如果您不介意它是否在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;
答案 1 :(得分:0)
我相信你可以通过XPath做到这一点。
XElement call = XElement.Load("your xml");
XElement welcomeCall = call.XPathSelectElement("descendant::welcomecall");
bool hasWelcomeCall = welcomeCall != null;
有关XPathSelectElement here的更多信息。