我正在加载一个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执行此操作?
答案 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();