[英]Can't loop children of returned XML Nodes in C#
我有一個大而凌亂的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>
我希望能夠在每個“項目”元素中搜索“名稱”元素並返回值。 誰能看到我要去哪里錯了?
這就是問題:
.Select(d => d.Name)
您將明確選擇元素的名稱 。 如果您想要實際的元素(我想您應該這樣做),請擺脫該調用:
var nodes = doc.Descendants().Elements(ns + "Item").ToList();
您也可以擺脫ToList()
除非您需要熱切地實現查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.