我不懂。我真的没有得到ReadEndElement。我假设在每个ReadStartElement之后,你需要关闭阅读器以进入下一个start元素,如果没有更多的start元素,请关闭所有其他元素的ReadEndElement?
返回XML的示例:
<Envelope>
<Body>
<RESULT>
<SUCCESS>true</SUCCESS>
<SESSIONID>dc302149861088513512481</SESSIONID>
<ENCODING>dc302149861088513512481
</ENCODING>
</RESULT>
</Body>
</Envelope>
reader.Read();
reader.ReadStartElement("Envelope");
reader.ReadStartElement("Body");
reader.ReadStartElement("RESULT");
reader.ReadStartElement("SUCCESS");
reader.ReadEndElement();
reader.ReadStartElement("SESSIONID");
_sessionID = reader.ReadString();
reader.ReadEndElement();
reader.ReadEndElement(); <-- error here
reader.ReadEndElement();
reader.ReadEndElement();
我忽略了其中一个元素(ENCODING)重新调整,因为我不需要它...不确定它是否与它有任何关系。也许我需要阅读每个元素,无论我是否想要使用它。
答案 0 :(得分:6)
您必须阅读文档中的每个节点(属性,元素......)。
如果阅读器位于元素上,您可以使用XmlReader.Skip跳过它(及其所有子节点)。
答案 1 :(得分:0)
我在尝试使用XmlSerializer进行反序列化时遇到了这种错误。我有一个有效的Xml,其中包含一些在我的源文档中未编码的<br />
个html标记。
<Event>
<Id>1</Id>
<Title>The first Sicknote with Chris Liberator</Title>
<Copy>
Sicknote - Techno vs Dubstep <br />
------------------------------------<br />
<br /><br />
Thursday 8th October - 11pm - 4am
</Copy>
<Date>2009-10-08T10:00:00</Date>
<FlierImage>1.jpg</FlierImage>
</Event>