C# 反序列化<;表>;将节点从XML加倍[]
我有一个包含矩阵值的XML文件(来自某处),我希望将其作为双[][]对象放入代码中。XML包含表节点,这些节点看起来像标准的序列化双[][]对象:C# 反序列化<;表>;将节点从XML加倍[],c#,.net,multidimensional-array,deserialization,xml-namespaces,C#,.net,Multidimensional Array,Deserialization,Xml Namespaces,我有一个包含矩阵值的XML文件(来自某处),我希望将其作为双[][]对象放入代码中。XML包含表节点,这些节点看起来像标准的序列化双[][]对象: <table type="System.Double[][]"><table type="System.Double[]"><el type="System.Double">0.005</el><el type="System.Double">0.001</el><el t
<table type="System.Double[][]"><table type="System.Double[]"><el type="System.Double">0.005</el><el type="System.Double">0.001</el><el type="System.Double">0.007</el><el type="System.Double">-0.012</el></table><table type="System.Double[]"><el type="System.Double">0.033</el><el type="System.Double">-0.146</el><el type="System.Double">-0.008</el><el type="System.Double">0.006</el></table><table type="System.Double[]"><el type="System.Double">-0.002</el><el type="System.Double">-0.004</el><el type="System.Double">-0.004</el><el type="System.Double">-0.003</el></table><table type="System.Double[]"><el type="System.Double">0</el><el type="System.Double">0</el><el type="System.Double">0</el><el type="System.Double">0</el></table></table>
这给我带来了一个意想不到的
。
错误,我还没有找到解决方案。。我对此非常恼火。您不能使用标准Xml序列化程序将此Xml反序列化为double[][]
double[][]
Xml序列化的格式如下:
1.
2.
您可以尝试使用LinqToXml手动解析这些Xml或将其转换为相应的格式。您不能使用标准Xml序列化程序将此Xml反序列化为
double[][]
double[][]
Xml序列化的格式如下:
1.
2.
您可以尝试使用LinqToXml手动解析这些Xml,或将其转换为相应的格式。最好使用XDocument来解析它,如下所示:-
var d = XDocument.Parse(testXml);
var r = d.Element("table");
var listOfDoubleArrays = new List<double[]>();
foreach (var outerArrayItem in r.Elements())
{
double[] arr = new double[r.Elements().Count()];
int i = 0;
foreach (var innerArrayItem in outerArrayItem.Elements())
{
arr[i] = System.Convert.ToDouble(innerArrayItem.Value);
i++;
}
listOfDoubleArrays.Add(arr);
}
double[][] result = listOfDoubleArrays.ToArray();
var d=XDocument.Parse(testXml);
var r=d.元素(“表”);
var listOfDoubleArrays=新列表();
foreach(r.Elements()中的var outerArrayItem)
{
double[]arr=新的double[r.Elements().Count()];
int i=0;
foreach(outerArrayItem.Elements()中的var innerrayItem)
{
arr[i]=System.Convert.ToDouble(innerArrayItem.Value);
i++;
}
添加(arr);
}
double[]result=listofDoubableArray.ToArray();
最好使用XDocument来解析它,如下所示:-
var d = XDocument.Parse(testXml);
var r = d.Element("table");
var listOfDoubleArrays = new List<double[]>();
foreach (var outerArrayItem in r.Elements())
{
double[] arr = new double[r.Elements().Count()];
int i = 0;
foreach (var innerArrayItem in outerArrayItem.Elements())
{
arr[i] = System.Convert.ToDouble(innerArrayItem.Value);
i++;
}
listOfDoubleArrays.Add(arr);
}
double[][] result = listOfDoubleArrays.ToArray();
var d=XDocument.Parse(testXml);
var r=d.元素(“表”);
var listOfDoubleArrays=新列表();
foreach(r.Elements()中的var outerArrayItem)
{
double[]arr=新的double[r.Elements().Count()];
int i=0;
foreach(outerArrayItem.Elements()中的var innerrayItem)
{
arr[i]=System.Convert.ToDouble(innerArrayItem.Value);
i++;
}
添加(arr);
}
double[]result=listofDoubableArray.ToArray();