簡體   English   中英

無法在C#中循環返回XML節點的子級

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM