我有一个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
答案 0 :(得分:1)
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']");
答案 1 :(得分:0)
谢尔盖的答案更准确,更易读。但是,如果您不关心其他节点,如果您只想在具有特定属性的节点上使用快速 的内容,你也可以用这个:
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 : "";