我有这种类型的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;包括在内
如果有人告诉我为什么会出现这个错误,那会很好! 谢谢!
答案 0 :(得分:1)
reader.Read
将遍历XML的每个部分,并且元素与其中的文本不同。
因此,一旦找到了您要查找的元素,就必须阅读其中的文本。
尝试更换:
String currStr = reader.Value;
使用:
String currStr = reader.ReadString();
答案 1 :(得分:0)
替换为
ObjectDescriptors[i, ii] = reader.ReadElementContentAsFloat();
解决了这个问题。问题已经结束。