如何获取xml元素的特定子元素?

时间:2014-12-04 12:48:47

标签: c# xml c#-4.0

我正在加载一个xml文档,我在其元素中有一个foreach循环,我想在其中选择名为tag的子元素。

这是xml文件:

<?xml version="1.0" encoding="utf-8"?>
<view>
    <tag>
      <name>content</name>
      <tag>
        <name>div</name>
      </tag>
    </tag>
</view>

这是代码:

string xmlString = System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath("~/xml/xml.xml"));
XDocument doc = XDocument.Parse(xmlString);
XElement xmlElement = doc.Element("view");
foreach (var tagItem in xmlElement.Descendants("tag"))
{
    //do something
}

在foreach循环中编写的代码将包含任何深度的所有标记元素,但我想获得第一个深度的(子代)。

如何使用linq执行此操作?

1 个答案:

答案 0 :(得分:2)

假设所需元素始终是<view>元素的子元素,您可以使用:

XElement xmlElement = doc.Element("view");
foreach (var tagItem in xmlElement.Elements("tag"))
{
    //do something (only direct children)
}

要获得所需的元素,没有什么可做的。然后,您可以使用Linq实施您的&#34;做某事&#34; ,例如:

XElement firstElem = xmlElement.Elements("tag").OrderBy(e => e.Name).First();