C#如何使用XmlNodeReader读取XML片段

admin 百科 16
XmlNodeReader 是 .NET 中轻量级只进 XML 片段读取器,基于已有 XmlNode 构建虚拟流,适用于局部内容提取;需传入有效 XmlNode(如 SelectSingleNode 结果),遍历其子树,但不支持向上访问、DTD、命名空间前缀解析及部分便捷方法,.NET Core+ 推荐优先使用 LINQ to XML。

C#如何使用XmlNodeReader读取XML片段-第1张图片-佛山资讯网

XmlNodeReader 是 .NET 中用于从 XmlNode(如 XmlElementXmlDocument)读取 XML 数据的轻量级只进读取器,适合处理 XML 片段(即非完整文档的节点子树)。它不解析整个文档,而是基于已有节点构建一个“虚拟流”,非常适合从已有 XML 结构中提取局部内容。

准备一个 XML 片段节点

要使用 XmlNodeReader,必须先有一个有效的 XmlNode 对象,比如从 XmlDocument 中选取的子节点:

XmlDocument doc = new XmlDocument();
doc.LoadXml(@"
<root>
  <person id="1">
    <name>张三</name>
    <age>28</age>
  </person>
  <person id="2">
    <name>李四</name>
    <age>32</age>
  </person>
</root>");

// 提取第一个 person 元素作为片段
XmlNode personNode = doc.SelectSingleNode("/root/person[1]");

登录后复制

用 XmlNodeReader 读取该片段

personNode 传入 XmlNodeReader 构造函数,然后像使用 XmlReader 一样遍历:

using (XmlNodeReader reader = new XmlNodeReader(personNode))
{
    while (reader.Read())
    {
        switch (reader.NodeType)
        {
            case XmlNodeType.Element:
                Console.WriteLine($"元素: {reader.Name}");
                if (reader.HasAttributes)
                    Console.WriteLine($"  属性: id={reader.GetAttribute("id")}");
                break;
            case XmlNodeType.Text:
                Console.WriteLine($"文本: {reader.Value.Trim()}");
                break;
        }
    }
}

登录后复制

输出示例:

标签: node switch c# .net

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~