gpt4 book ai didi

c# - 如何使用 linq to xml 解析下面的 xml 字符串?

转载 作者:太空宇宙 更新时间:2023-11-03 20:13:28 26 4
gpt4 key购买 nike

XML:

<shift_details>
<shift_time>10:00 to 10:30</shift_time>
<count>0</count>
<shift_time>10:30 to 11:00</shift_time>
<count>0</count>
<shift_time>11:00 to 11:30</shift_time>
<count>0</count>
<shift_time>11:30 to 12:00</shift_time>
<count>0</count>
<shift_time>12:00 to 12:30</shift_time>
<count>0</count>
</shift_details>

代码:

var slots = from c in xmlResponse.Descendants("shift_details")
select new TimeSlots
{
time = (string)c.Element("shift_time"),
count = (string)c.Element("count"),
};

上面的代码只返回一个插槽项作为输出。但是我的 xml 包含太多记录。

如何读取上面xml中的所有记录?

最佳答案

那是因为 Element 只返回给定名称的第一个元素。 您应该考虑更改 XML 结构以将不同的插槽彼此分开,例如:

<shift_details>
<shift>
<shift_time>10:00 to 10:30</shift_time>
<count>0</count>
</shift>
(...)
</shift_details>

然后这样查询:

var slots = from c in xmlResponse.Element("shift_details").Elements("shift")
select new TimeSlots
{
time = (string)c.Element("shift_time"),
count = (string)c.Element("count"),
};

或者如果你不能改变XML,你仍然可以查询它,但它会更棘手一点:

var doc = XDocument.Load("Input.txt");
var details = doc.Root;

var times = details.Elements("shift_time");
var counts = details.Elements("count");

var slots = times.Zip(counts, (t, c) => new { time = (string)t, count = (string)c }).ToList();

关于c# - 如何使用 linq to xml 解析下面的 xml 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18379850/

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