[英]How do I use LINQ to XML to create a list of objects?
我有一些入站XML,我試圖用LINQ讀取生成對象列表:
<SCResponse>
<link href="http://192.168.6.126:8001/affiliate/account/81/notifications?startRow=2&limit=20" rel="next_page" title="Next"/>
<link href="http://192.168.6.126:8001/affiliate/account/81/notifications?startRow=1&limit=20" rel="previous_page" title="Previous"/>
<RecordLimit>20</RecordLimit>
<Notifications>
<Notification href="http://192.168.6.126:8001/affiliate/account/81/notifications/24">
<NotificationDate>2013-03-15T16:41:37-05:00</NotificationDate>
<NotificationDetails>Notification details 1</NotificationDetails>
<Status>New</Status>
<NotificationTitle>Test notification 1</NotificationTitle>
</Notification>
</Notifications>
<RecordsReturned>1</RecordsReturned>
<StartingRecord>1</StartingRecord>
<TotalRecords>1</TotalRecords>
我創建了一個簡單的POCO對象來表示“通知”:
public class Notification
{
public System.DateTime notificationDate;
public string notificationDetails;
public string status;
public string notificationTitle;
public string href;
}
我想讀取傳入的XML並創建一個對象列表。
List<Notification> notificationList;
XElement x = XElement.Load(new StringReader(result));
if (x != null && x.Element("Notifications") != null)
{
notificationList = x.Element("Notifications")
.Elements("Notification")
.Select(e => new Notification()
.ToList();
}
我真的不清楚'e'部分以及如何初始化一個新的Notification對象。 你可以幫忙嗎?
e
只是傳遞給lambda表達式的參數名稱, new Notification()
。 你可以像這樣使用它:
notificationList = x.Element("Notifications")
.Elements("Notification")
.Select(e => new Notification()
{
href = (string)e.Attribute("href")
notificationDetails = (DateTime)e.Element("NotificationDate")
notificationDate = (string)e.Element("NotificationDetails")
status = (string)e.Element("Status")
notificationTitle = (string)e.Element("NotificationTitle")
}
.ToList();
或者如果您更喜歡查詢語法
notificationList =
(from e in x.Element("Notifications").Elements("Notification")
select new Notification()
{
href = (string)e.Attribute("href")
notificationDetails = (DateTime)e.Element("NotificationDate")
notificationDate = (string)e.Element("NotificationDetails")
status = (string)e.Element("Status")
notificationTitle = (string)e.Element("NotificationTitle")
})
.ToList();
使用對象初始化語法:
notificationList = x.Element("Notifications")
.Elements("Notification")
.Select(e => new Notification()
{
href = (string)e.Attribute("href"),
notificationDate = (DateTime)e.Element("NotificationDate"),
notificationDetails = (string)e.Element("NotificationDetails"),
status = (string)e.Element("Status"),
notificationTitle = (string)e.Element("NotificationTitle")
})
.ToList();
請記住,您可以輕松地將XElement
和XAttribute
等對象XAttribute
為string
, int
, double
, DateTime
等。 完整列表可在此處找到: XElement類型轉換
notificationList = x.Element("Notifications")
.Elements("Notification")
.Select(e => new Notification()
{
notificationDate = DateTime.Parse(e.Element("NotificationDate").Value),
notificationDetails = e.Element("NotificationDetails").Value,
status = e.Element("Status").Value,
notificationTitle = e.Element("NotificationTitle").Value,
href = e.Attribute("href").Value
}
.ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.