0
考虑下面的XML(例如):通过子元素循环使用的XmlReader
<root>
<foo>some data</foo>
<bar>some other data</bar>
</root>
我目前正在读它:
reader.ReadToFollowing("root")
if(reader.HasAttributes) { /* not relevant in this usecase*/ }
while(reader.IsStartElement())
{
reader.ReadStartElement()
var elementName = reader.LocalName;
var value = reader.ReadElementContentAs(typeof(ExpectedType),null);
//Process(elementName, value);
reader.ReadEndElement();
}
如果我运行它像这样,我得到了一个异常
'元素'是无效的XmlNodeType。在reader.ReadEndElement();
如果我删除最后一行,则只执行一次。 foo被正确处理,bar不被读取。
有什么想法?
如果我这样做,我必须跳过元素之间的WhitespaceNodes,并且我得到了“ReadElementContentAs方法在节点类型EndElement上不受支持”。在第二个元素上的ReadElementContentAsString()... –
尝试在循环中跳过不是元素的所有东西:'if(reader.NodeType!= XmlNodeType.Element){continue; }' – sc3w
看起来ReadElementContentAsString()也将读者定位在下一个元素上。它应该这样做吗?如果没有,那么我发现了一个我正在使用的平台上的错误(我正在智能设备上使用.Net CF克隆)。 Thx,它会解释很多:-s –