gpt4 book ai didi

c# - 如何获取作为另一个元素后代的多个 XML 元素

转载 作者:太空宇宙 更新时间:2023-11-03 21:24:42 25 4
gpt4 key购买 nike

我有一个 XML 文档,在另一个元素下可以有多个子元素,我想知道如何获取所有这些元素并将其存储为一个对象?例如-

<?xml version="1.0" encoding="utf-8" ?>
<export>
<order>
<ordernumber>100</ordernumber>
<items>
<item>
<name>table</name>
</item>
<item>
<name>chair</name>
</item>
</items>
</order>
</export>

假设我使用 LINQ 获取所有订单并存储在列表中

var xdoc = XDocument.Load(myXMLReader);

var result = (from x in xdoc.Root.Elements()
select new Order
{
OrderNumber = (string)x.Element("OrderNumber")
}).ToList();

要获取订单中的所有项目并存储在另一个对象属性(如列表或类似的东西)中,我需要对上述内容执行什么操作?例如。

var result = (from x in xdoc.Root.Elements()
select new Order
{
OrderNumber = (string)x.Element("OrderNumber")

//PSUEDO CODE ADDITION
Items = (new { Name = itemname}).ToList()
// END PSUEDO CODE ADDITION

}).ToList();

最佳答案

我不完全确定您要做什么。但我认为它可能是这样的:

var result = (from x in xdoc.Root.Elements()
select new Order
{
OrderNumber = (string)x.Element("ordernumber"),
Items = x.Element("items")
.Elements("item")
.Select(itemElement =>
new Item { Name = itemElement.Value })
.ToList()
}).ToList();

换句话说:对于给定的元素,首先找到一个 items子元素,然后从该元素中选择其所有 item子元素,最后从该集合投影到 Item 的集合对象,被物化为 List<Item>并分配给Order.Items属性(property)。

(注意:您将命名类型 Order 与表示 item XML 元素的匿名类型混合在一起;我修改了代码,以便它在所有地方都使用命名类型,但是您当然可以在所有地方使用匿名,而不是如果您喜欢)。

关于c# - 如何获取作为另一个元素后代的多个 XML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27935560/

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