Я загружаю 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?
Предполагая, что нужные элементы всегда являются дочерними элементами элемента <view>
вы можете использовать:
XElement xmlElement = doc.Element("view");
foreach (var tagItem in xmlElement.Elements("tag"))
{
//do something (only direct children)
}
Больше ничего не сделать, чтобы получить нужные элементы. Затем вы можете реализовать свое "сделать что-то" с Linq, например:
XElement firstElem = xmlElement.Elements("tag").OrderBy(e => e.Name).First();
tag
элементы всегда детиview
элемента? Тогда делай то, что говорит Бен ниже ...