'Element'是无效的XmlNodeType

时间:2009-03-19 01:57:46

标签: c# xml

我不懂。我真的没有得到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)重新调整,因为我不需要它...不确定它是否与它有任何关系。也许我需要阅读每个元素,无论我是否想要使用它。

2 个答案:

答案 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>