【C# XML】XML的解析器

访问XML文件的两个基本模型和一个C#特有的模型

1)DOM文档模型(XML Doc的Xpath)

DOM模型是W3C标准,C#对DOM文档模型的实现类 为 XmlDocument 类

使用DOM的好处在于它允许编辑和更新XML文档,可以随机访问文档中的数据,可以使用XPath查询,但是,DOM的缺点在于它需要一次性加载整个文档到内存中,对于大型的文档,这会造成资源问题。

根据 DOM,XML 文档中的每个成分都是一个节点。关于节点(非常重要)

DOM 是这样规定的:

  • 整个文档是一个文档节点
  • 每个 XML 标签是一个元素节点
  • 包含在 XML 元素中的文本是文本节点
  • 每一个 XML 属性是一个属性节点
  • 注释属于注释节点

注意:

文本总是存储在文本节点中

在 DOM 处理中一个普遍的错误是,认为元素节点包含文本。

不过,元素节点的文本是存储在文本节点中的。

在这个实例中:<year>2005</year>,元素节点 <year>,拥有一个值为 "2005" 的文本节点。

"伐木" 不是 <type> 元素的值!

 详细学习DOC文档模型:https://www.runoob.com/dom/dom-methods.html

2)流模型(Stream的XMLReader)

流模型很好的解决了这个问题,因为它对XML文件的访问采用的是流的概念,也就是说,任何时候在内存中只有当前节点,但它也有它的不足,它是只读的,仅向前的,不能在文档中执行向后导航操作。虽然是各有千秋,但我们也可以在程序中两者并用实现优劣互补。

在C#中,使用SAX进行解析的类为XmlReader, XmlWriter,这两个类都是抽象类,由具体的子类来实现相关的功能。

3)C#特有的Linq to Xml读取复杂xml(带命名空间)

posted @ 2022-04-23 18:36  小林野夫  阅读(573)  评论(0编辑  收藏  举报
原文链接:https://www.cnblogs.com/cdaniu/