我怎样才能跳到 EndElement?

How can I skip to an EndElement?

我有下一个xml:

<work><pageSetup paperSize="9"><a foo="aa"/></pageSetup></work>

我 运行 在元素上:

using (XmlReader reader = XmlReader.Create(myFile.xml))
{
    while (reader.Read())
    {
        Console.WriteLine(reader.Name + " " + reader.NodeType);
        if (reader.Name == "pageSetup") reader.Skip();
    }
 }

我想跳到 < /pageSetup> EndElement(当 "cursor" 在 上时),但 Skip() 方法跳过整个元素 及其 EndElemet。 (这是写在 https://msdn.microsoft.com/en-us/library/aa720634(v=vs.71).aspx 中的 Skip() 方法的正确行为: Skip 方法在当前元素上移动。如果节点类型是 XmlNodeType.Element,调用 Skip 会移动到元素的所有内容和元素结束标记。)

在这种情况下适合使用什么方法?

您只需继续调用 Read() 直到 Depth 返回到您开始的节点。像这样的东西应该可以工作(省略错误处理):

int startDepth = reader.Depth; // assume you're on the start element
if (!reader.IsEmptyElement) { // if it is an <empty /> element, there is no end
    reader.Read();
    while (reader.Depth > startDepth) reader.Read();
}