我有一个包含矩阵值的 XML 文件(来自某处),我希望将其作为 double[][] 对象进入我的代码。XML 包含表节点,看起来像标准的序列化 double[][] 对象:
<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 都采用这种形式,因此我只将这些节点提取为 XmlNode(因为 XElements 没有 InnerXml)。让我们称之为myMatrixXmlNode
。然后,我尝试将其放入 MemoryStream 中,然后从中反序列化:
var deserializer = new XmlSerializer(typeof(double[][]));
var myMatrix = (double[][])deserializer.Deserialize(new MemoryStream(Encoding.UTF8.GetBytes(myMatrixXmlNode.InnerXml)));
这给了我一个<table xmlns=''> was not expected.
错误,我还没有找到解决方案。我对此感到非常恼火。