XElement.Element(“Leve1 / Level2”)而不是XElement.Element(“Leve1”)。元素(“Level2”)

时间:2018-03-13 07:27:02

标签: c# xml linq-to-xml xelement

如果我在C#中的XElement myXML变量中有以下XML,

<Example>
   <Level1>
      <Level2>myvalue</Level2>
   </Level1>
</Example>

要获得“myvalue”,我需要执行以下操作:

myXML.Element("Leve1").Element("Level2").Value;

是否有任何捷径可以这样做:

myXML.Element("Leve1/Level2").Value

...谢谢

3 个答案:

答案 0 :(得分:1)

尝试下面的代码段,

//Load xml
XDocument xdoc = XDocument.Parse("<Example><Level1><Level2>myvalue</Level2</Level1></Example>");

//Run query
var lv2s = (from lv2 in xdoc.Descendants("Level2") select lv2.Value).ToList();

答案 1 :(得分:1)

我个人建议您使用Descendants。如果您想使用Level1应用特定路径,则可以Parent上的Level1进行过滤;

var elementValue = doc.Descendants("Level2")
    .Where(x => x.Parent.Name == "Level1")
    .Select(x => x.Value).FirstOrDefault();

答案 2 :(得分:1)

您可以使用xpath,其语法与您完全相同:

var myValue = myXML.XPathSelectElement("Level1/Level2").Value;

XPathSelectElement是扩展方法,因此您需要添加using System.Xml.XPath;才能使用它。