给定一个示例xml文件:
<libraries>
<library name="some library">
<book name="my book"/>
<book name="your book"/>
</library>
<library name="another library">
<book name="his book"/>
<book name="her book"/>
</library>
</libraries>
一个人将如何通过每个图书馆迭代并只接到孩子?例如。如果我是第一个图书馆元素,而我去检索了所有的后代/孩子,它只会带着其中的两本书返回。
我已经尝试了迭代和使用xlement.element.element(" book"),xlement.elements(),xlement.descendants()等,但所有返回书籍的每个元素(因此它将从第二个库也是)。通常,我认为我只是在努力了解Xdocument如何跟踪其元素以及被认为是后代/孩子的内容。
如果可能的话,如果可以解释如何使用任何级别的元素进行Xdocument,那么将要欣赏(例如,如果每本书都有子元素,以及这些元素是否具有子元素等)。
您可以通过以下方式浏览所有库的后代,在XML上迭代。
XDocument doc=XDocument.Load(XmlPath);
foreach (var item in doc.Descendants("library"))
IEnumerable<XNode> nodes = item.DescendantNodes();//Here you got book nodes within a library
sheer,
问题是您正在用"书"拉动所有元素。
如果您只想获得依赖父元素的项目,则必须提供适当的条件。
var v = from n in doc.Descendants("library")
where n.Attribute("name").Value == "some library"
select n.DescendantNodes();
现在,这将为您提供名称为"一些库"的元素。