gpt4 book ai didi

c# - 如何使用 LINQ to XML 创建对象列表?

转载 作者:行者123 更新时间:2023-11-30 19:28:25 25 4
gpt4 key购买 nike

我尝试使用 LINQ 读取一些入站 XML 以生成对象列表:

<SCResponse>
<link href="http://192.168.6.126:8001/affiliate/account/81/notifications?startRow=2&amp;limit=20" rel="next_page" title="Next"/>
<link href="http://192.168.6.126:8001/affiliate/account/81/notifications?startRow=1&amp;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 expression 的参数名称, 新通知()。你可以像这样使用它:

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();

关于c# - 如何使用 LINQ to XML 创建对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15508450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com