如果我跳过,我还需要阅读结束元素吗?
reader.ReadStartElement("ENCODING");
reader.Skip();
reader.ReadEndElement();
当我们需要ReadEndElement时,我没有得到。例如,我们已经在一些课程中完成了并没有使用它。例如:
using (reader)
{
reader.Read();
reader.ReadStartElement("Envelope");
reader.ReadStartElement("Body");
reader.ReadStartElement("RESULT");
reader.ReadStartElement("SUCCESS");
_success = reader.ReadString();
if (!Success)
{
if (SomeUtil.ReadUntilElement(reader, "FaultString"))
{
string _errorMessage = reader.ReadString();
InvalidOperationException ex = new InvalidOperationException(_errorMessage);
throw ex;
}
else
throw new InvalidOperationException("Invalid Error Message");
}
}
答案 0 :(得分:1)
您需要将调用ReadStartElement的次数与对ReadEndElement的相同调用次数进行匹配。在某些情况下,当您处于最后一个元素时,它实际上可能有效,但通常不推荐使用它。
答案 1 :(得分:1)
您可以通过大致执行以下操作来跳过当前元素:
int depth = reader.Depth;
while (!reader.EOF && (reader.Depth > depth || reader.NodeType == XmlNodeType.EndElement))
reader.Read();
通过捕捉和比较读者的深度,我们可以确定我们找到了当前元素的匹配关闭。