用System.Xml 读写XML

在IT领域,特别是针对.NET开发环境,理解和掌握如何使用`System.Xml`命名空间来读取和写入XML数据是一项至关重要的技能。XML(可扩展标记语言)是一种用于存储和传输数据的标准格式,它以一种清晰且易于理解的方式组织数据。`System.Xml`提供了一系列类,这些类可以用来解析、创建、修改和保存XML文档。 ### XML的基本结构 XML文档由根元素、子元素、属性、文本节点等构成。例如,在给定的部分内容中,`<LinkLibrary>`是根元素,而`<Link>`则是其子元素。每个`<Link>`元素包含三个属性:`Cat`、`Url`和`Desc`。这些元素和属性构成了XML文档的数据结构。 ### `System.Xml`中的关键类 在`System.Xml`命名空间中,有几个核心类用于处理XML数据: 1. **DOM操作类**:如`XmlDocument`和`XmlNode`,用于构建XML文档的内存模型,允许开发者以对象形式访问和修改XML文档。 2. **流式读写器**:如`XmlReader`和`XmlWriter`,它们提供了快速读写XML文档的能力,适用于大数据量的处理,因为它们不将整个文档加载到内存中。 3. **验证读写器**:如`XmlValidatingReader`和`XmlValidatingWriter`,它们在读写XML时提供模式验证,确保文档符合预定义的DTD或XSD模式。 4. **特定用途读写器**:如`XmlNodeReader`和`XmlNodeWriter`,它们以`XmlNode`为源或目标进行读写操作。 ### XML节点类型 `System.Xml`定义了多种XML节点类型,包括但不限于: - `XmlDeclaration`:表示XML声明,如`<?xml version='1.0'?>`。 - `Attribute`:元素的属性,如`id='123'`。 - `CDATA`:表示字符数据,用于包含特殊字符而无需转义,如`<![CDATA[myescapedtext]]>`。 - `Comment`:XML注释,如`<!--mycomment-->`。 - `Document`:代表整个XML文档。 - `DocumentFragment`:文档的一部分。 - `DocumentType`:DTD声明,如`<!DOCTYPE>`. - `Element`:XML元素,如`<item>`。 - `EndElement`:元素结束标记,如`</item>`。 - `Entity`:实体声明,如`<!ENTITY>`。 - `EndEntity`:实体引用解析后的位置。 - `EntityReference`:实体引用,如`#`。 - `Notation`:表示非XML数据类型的声明,如`<!NOTATION>`。 - `ProcessingInstruction`:处理器指令,如`<?pitest?>`。 - `SignificantWhitespace`:显著的空白字符,当`xml:space="preserve"`被设置时保留空白。 - `Text`:纯文本节点。 ### 使用`XmlTextReader` `XmlTextReader`是一个高效的XML读取器,用于顺序读取XML文档。通过以下方式实例化和使用`XmlTextReader`: ```csharp using System.Xml; XmlTextReader reader = new XmlTextReader("*.xml"); while (reader.Read()) { // 处理XML数据 } reader.Close(); ``` 在读取过程中,`XmlTextReader`提供了多种方法和属性来检查和获取当前节点的信息,如: - `HasAttributes`:检查当前节点是否具有属性。 - `HasValue`:检查当前节点是否有值。 - `AttributeCount`:获取当前节点的属性数量。 - `Value`:获取当前节点的值。 - `Name`:获取当前节点的名称。 - `Depth`:获取当前节点在文档树中的深度。 - `LineNumber`和`LinePosition`:获取当前节点在文档中的行号和位置。 - `LocalName`:获取当前节点的本地名称(没有前缀)。 掌握`System.Xml`及其相关的类和属性,对于任何希望在.NET环境中高效处理XML数据的开发者来说都是必不可少的。











<LinkLibrary xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Link Cat="aa" Url="aa" Desc="aa" />
<Link Cat="bb" Url="aa" Desc="aa" />
<Link Cat="cc" Url="aa" Desc="aa" />
<Link Cat="aa" Url="aa" Desc="aa" />
<Link Cat="aa" Url="aa" Desc="aa" />
<Link Cat="aa" Url="aa" Desc="aa" />
<Link Cat="aa" Url="aa" Desc="aa" />
<Link Cat="aa" Url="aa" Desc="aa" />
<Link Cat="aa" Url="aa" Desc="aa" />
<Link Cat="aa" Url="aa" Desc="aa" />
</LinkLibrary>
XML概念
Root XML根节点,只能且必须有一个(以上为LinkLibrary)
Element 节点元素(如Link)
Attribute 节点属性(如Cat, Url, Desc)
Content 内容(非空白文本、CDATA、Element、EndElement、EntityReference 或 EndEntity)节点
System.Xml空间
以下类适合快速流式读写XML文件(注:DOM适合随机读写)
XmlReader, XmlWriter,
XmlTextReader, XmlTextWriter
XmlValidatingReader, XmlValidatingWriter 添加了DTD和模式验证,因此提供了数据的有效性验证
XmlNodeReader, XmlNodeWriter 把XmlNode作为其源
节点类型(public enum XmlNodeType)
XmlDeclaration XML 声明(例如,<?xml version='1.0'?>)。
Attribute 属性(例如,id='123')。
CDATA CDATA 节(例如,<![CDATA[my escaped text]]>)。
Comment 注释(例如,<!-- my comment -->)
Document 作为文档树的根的文档对象提供对整个 XML 文档的访问。
DocumentFragment 文档片段。
DocumentType 由以下标记指示的文档类型声明(例如,<!DOCTYPE...>)。
Element 元素(例如,<item>)。
EndElement 末尾元素标记(例如,</item>)。
Entity 实体声明(例如,<!ENTITY...>)。
EndEntity 由于调用 ResolveEntity 而使 XmlReader 到达实体替换的末尾时返回。
EntityReference 实体引用(例如,#)。
None 如果未调用 Read 方法,则由 XmlReader 返回。
Notation 文档类型声明中的表示法(例如,<!NOTATION...>)。
ProcessingInstruction 处理指令(例如,<?pi test?>)。
SignificantWhitespace 混合内容模型中标记间的空白或 xml:space="preserve" 范围内的空白。
Text 节点的文本内容。
Whitespace 标记间的空白。
------------------------------------------------------------------------
使用XmlTextReader快速读取
------------------------------------------------------------------------
创建
打开 XmlTextReader reader = new XmlTextReader("*.xml");
关闭 reader.Close();
剩余13页未读,继续阅读

- zancuoren002014-11-07真心不错哦,挺有用的,感谢分享。

- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 土石坝坝基及岸坡处理单元工程质量评定表-doc.doc
- 工程停工期间的工期及费用索赔案例评析.doc
- 隐名合伙契约书.doc
- 2009年10月最新农村群众入党申请书-.doc
- 2013版《建设工程工程量清单计价规范》.ppt
- 黄河特大桥水中桩基爆破施工技术.doc
- 电子行业的应用.ppt
- 符合IEC-B1508功能安全的自动扶梯安全保护.doc
- 潮惠涵洞施工组织设计.doc
- 国家级森林公园基础设施建设项目.doc
- 高端居住区建设工程总承包合同.doc
- 成套概(预)算表格(EXCLE).doc
- 工程估价【投资估算】.ppt
- 第6章-字符型数据.ppt
- 员工日常行为奖罚细则OK.doc
- 【精品】企业员工工作总结锦集6篇.doc


