c# - 如何跳到 EndElement?

标签 c# xml xmlreader

我有下一个 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();
    }
 }

我想跳到 EndElement(当“光标”位于 < pageSetup> 上时),但 Skip() 方法会跳过整个元素及其 EndElemet。 (这是 Skip() 方法的正确行为,如 https://msdn.microsoft.com/en-us/library/aa720634(v=vs.71).aspx 中所写: 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();
}

关于c# - 如何跳到 EndElement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37537818/

相关文章:

c# - SignalR 核心 - 使死连接无效

c# - LINQ to Entities 无法识别 MVC5 中的方法 'System.DateTime ParseExact(System.String, System.String, System.IFormatProvider)' 方法错误

xml - 对前兄弟和后兄弟的影响感到困惑

xml - 在 Eclipse 中维护关于自动格式化的 XML 注释部分的格式

.net - 从 XmlReader 读取 XElement

c# - 使用 EF 4.3 代码优先迁移对列重新排序

c# - 使用电子邮件地址登录 - Membership API

javascript - 尝试将 DOMParser 与 Node js 一起使用

.net - 任何人都可以向我解释 System.Xml.XmlDictionaryWriter.WriteNode(XmlReader, bool) 方法的 bool 参数的含义是什么?

silverlight - LINQ to XML 与 XmlReader