使用XmlTextReader读取C#中的XML数据

本文关键字:XML 数据 中的 XmlTextReader 读取 使用 | 更新日期: 2023-09-27 18:00:22

我有这种类型的XML格式:

<?xml version="1.0" encoding="utf-8"?>
<root>
 <descriptor>
    <feature>5.12</feature>
    <feature>0.0002827647</feature>
    <feature>0.0147277</feature>
    <feature>0.00037847</feature>
 </descriptor>
</root>

使用MSDN的例子,我试着这样读:

Matrix<float> ObjectDescriptors = new Matrix<float>(200, 4);
        XmlTextReader reader = new XmlTextReader("descriptors.xml");
        int i = -1;
        int ii = 0;
        while (reader.Read())
        {
            if (reader.Name == "feature" && ii < 4)
            {
                String currStr = reader.Value;
                ObjectDescriptors[i, ii] = Convert.ToSingle(currStr);                    
                ii++;
                if (ii == 4) ii = 0;
            }
            else if (reader.Name == "descriptor") i++;
        }

我收到以下线路错误

AgrObjectDescriptors[i, ii] = Convert.ToSingle(currStr);

mscorlib.dll中发生"System.FormatException"类型的未处理异常附加信息:输入字符串的格式不正确。

似乎正在检测节点"功能"(reader={Element,Name="feature"}),但其内容为空(")

使用System.Xml;包括

如果有人告诉我为什么会发生这个错误,那就太好了!非常感谢。

使用XmlTextReader读取C#中的XML数据

reader.Read将遍历XML的每个部分,并且元素与其中的文本不同。

因此,一旦你找到了你要找的元素,你就必须阅读里面的文本。

尝试更换:

String currStr = reader.Value;

带有:

String currStr = reader.ReadString();

替换为

ObjectDescriptors[i, ii] = reader.ReadElementContentAsFloat(); 

解决了问题。问题结束了。