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

时间:2015-06-30 03:00:00

标签: c# xml

我有这种类型的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;包括在内

如果有人告诉我为什么会出现这个错误,那会很好! 谢谢!

2 个答案:

答案 0 :(得分:1)

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

因此,一旦找到了您要查找的元素,就必须阅读其中的文本。

尝试更换:

String currStr = reader.Value;

使用:

String currStr = reader.ReadString();

答案 1 :(得分:0)

替换为

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

解决了这个问题。问题已经结束。