C# 使用linq从xml加载1D数组
一、 我搜索了一下,但没有找到任何我认为适合的答案,我正在使用XDocument加载我的xml,但在将其转换为数组时遇到了一些问题C# 使用linq从xml加载1D数组,c#,xml,arrays,linq,C#,Xml,Arrays,Linq,一、 我搜索了一下,但没有找到任何我认为适合的答案,我正在使用XDocument加载我的xml,但在将其转换为数组时遇到了一些问题 <?xml version="1.0" encoding="UTF-8"?> <document> <sNone> <October>3.21</October> <November>-5.41</November> <December>-15
<?xml version="1.0" encoding="UTF-8"?>
<document>
<sNone>
<October>3.21</October>
<November>-5.41</November>
<December>-15.81</December>
<January>-21.69</January>
<February>-21.70</February>
<March>-12.60</March>
<April>-6.41</April>
<May>-0.06</May>
<June>5.42</June>
<July>13.32</July>
<August>14.12</August>
<September>7.55</September>
</sNone>
<sLichen>
<October>1.99</October>
...
</sLichen>
</document>
但我对如何返回1D数组感到困惑,因为我有多个后代
编辑
我的目标是得到这样一个数组
{3.21、-5.41、-15.81、-21.69、-21.70、-12.60、-6.41、-0.06、5.42、13.32、14.12、7.55}这应该会起作用:
var doc = "<?xml version=\"1.0\" encoding=\"UTF-8\"?....";
XDocument xdoc = XDocument.Parse(doc);
var items = xdoc.Root.Elements("sNone").Descendants().Select(d => d.Value).ToArray();
Console.WriteLine(items);
希望这有帮助。嗯,是的。如果您真的需要将其展平为1D数组或列表,那么它的外观将取决于您。将其反序列化为自定义对象会更容易,因为一维数组是什么?
sNone
中的元素没有相同的名称,是否应该映射到类?。如何处理sLichen?你需要给我们更多的信息来帮助你。但我一次只需要加载一个后代,这就是为什么我consufed@SimonBelanger我不明白你在问什么,我有一个xml文件,里面填充了不同名称的后代,所以我想我可以做一些doc.Root.Elements(“sNone”)。选择(…)
但我不知道要选择什么…您可能可以使用“sNone”节点上的.Elements()或.subjects()来实现这一点,然后应用.select()将其映射到数组上?
var doc = "<?xml version=\"1.0\" encoding=\"UTF-8\"?....";
XDocument xdoc = XDocument.Parse(doc);
var items = xdoc.Root.Elements("sNone").Descendants().Select(d => d.Value).ToArray();
Console.WriteLine(items);
var items2 = xdoc.Root.Elements("sNone").Descendants().Select(d => decimal.Parse(d.Value)).ToArray();