可以';t循环C#中返回的XML节点的子级
本文关键字:返回 XML 节点 循环 可以 | 更新日期: 2023-09-27 18:24:18
我有一个大而混乱的XML文件,我想从中检索所有同名的元素(为了本文的目的,是"Item"),然后能够从每个元素的子元素中检索数据。
到目前为止,我已经使用这段代码返回了一个名为"Item"的每个元素的列表,它只是在p标签中显示名称空间url和"Item":
XDocument doc = XDocument.Load(@"C:'inetpub'wwwroot'mysite'myxml.xml");
XNamespace ns = "http://www.mynamespace.com";
var nodes = doc.Descendants().Elements(ns + "Item").Select(d => d.Name).ToList();
foreach(var x in nodes){
<p>@x</p>
}
但是,通过用以下内容修改代码,我无法检索它的子级的任何数据,并且出现错误"System.Xml.Linq.XName"不包含"Descendants"的定义:
foreach(var x in nodes){
<p>@x.Descendants().Element("Name")</p>
}
这是我的XML文件的一个非常基本的版本:
<Item>
<Name>Item 1</Name>
<Type>Type 1</Type>
</Item>
我希望能够在每个"Item"元素中搜索一个"Name"元素并返回值。有人看到我哪里错了吗?
这就是问题所在:
.Select(d => d.Name)
您显式地选择了元素的名称。如果你想要实际的元素(我认为你确实想要),就去掉这个调用:
var nodes = doc.Descendants().Elements(ns + "Item").ToList();
您也可以去掉ToList()
,除非需要急切地实现查询。