Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用linq从xml加载1D数组_C#_Xml_Arrays_Linq - Fatal编程技术网

C# 使用linq从xml加载1D数组

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

一、 我搜索了一下,但没有找到任何我认为适合的答案,我正在使用XDocument加载我的xml,但在将其转换为数组时遇到了一些问题

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