[英]How to get a specif node of an xml using child node name in LINQ
我有一个如下所示的XML文档
<A>
<B>
<C name="C1" >value1</C>
<C name="C2">value2</C>
<C name="C3">value3</C>
<C name="C4">value4</C>
</B>
</A>
我想使用节点名称获取特定的节点。 我如何使用LINQ实现这一目标。 我对LINQ不太满意
var doc = XDocument.Load(path_to_xml);
var value = (string)doc.Root.Element("B").Elements("C")
.FirstOrDefault(c => (string)c.Attribute("name") == "C3");
或搭配XPath
var value = (string)doc.XPathSelectElement("A/B/C[@name='C3']");
谢尔盖的答案更加准确和可读。 但是, 如果您不关心其他节点, 并且只希望仅基于具有特定属性的节点快速进行操作,则也可以使用以下方法:
string value = "";
value = xml.Descendants().Where(x => x.Attribute("name") != null && x.Attribute("name").Value == "C2").FirstOrDefault() != null ?
xml.Descendants().Where(x => x.Attribute("name") != null && x.Attribute("name").Value == "C2").FirstOrDefault().Value : "";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.