[转]C#下使用XmlDocument操作XML详解
C#下使用XmlDocument操作XML详解
一、XML DOM概述
XML 文档大小写敏感、属性用引号括起来,每一个标记都要闭合。
DOM是XML文档的内存中树状的表示形式。
继承关系图:
二、XML成员
1、XMl节点:XmlNode
1、属性:
- ChildNodes : 所有子节点。
- FirstChild : 第一个子级。
- HasChildNodes :获是否有任何子节点。
- LastChild :最后一个子节点。
- ParentNode : 父节点(针对可以拥有父级的节点)。
- NextSibling : 紧接在该节点之后的兄弟节点。
- PreviousSibling : 紧接在该节点之前的兄弟节点。
- InnerText : 节点及其所有子节点的文本值。
- InnerXml :子节点的XML标记。
- OuterXml : 此节点及其所有子节点XML标记。
- NodeType : 获取当前节点的类型。
- Value :节点的值。
- Attributes : 节点的特性XmlAttributeCollection。
- OwnerDocument : 节点所属的 XmlDocument。
2、方法:
- AppendChild(XmlNode) : 添加到该节点的子节点列表的末尾。
- PrependChild(XmlNode) : 追加到该节点的子节点列表的开头。
- InsertAfter(XmlNode, XmlNode) : 将指定的节点紧接着插入指定的节点之后。
- InsertBefore(XmlNode, XmlNode) : 将指定的节点紧接着插入指定的节点之前。
- RemoveAll() : 移除当前节点的所有子节点和/或属性。
- RemoveChild(XmlNode) : 移除指定的子节点。
- ReplaceChild(XmlNode, XmlNode) : 用 oldChild 节点替换子节点 newChild。
- SelectNodes(String) : 选择匹配 XPath 表达式的节点列表。
- SelectSingleNode(String) : 选择匹配 XPath 表达式的第一个 XmlNode。
- WriteContentTo(XmlWriter) : 当在派生类中被重写时,该节点的所有子节点会保存到指定的 XmlWriter 中。
- WriteTo(XmlWriter) : 当在派生类中被重写时,将当前节点保存到指定的 XmlWriter 中。
- Clone() : 创建此节点的副本。
- CloneNode(Boolean) : 当在派生类中被重写时,创建该节点的副本
- CreateNavigator() : 创建 XPathNavigator 以浏览此对象。
2、XML文档:XMLDocument
1、属性:
- DocumentElement : 获取文档的根 XmlElement。
- DocumentType : 获取包含 DOCTYPE 声明的节点。
- PreserveWhitespace : 获取或设置一个值,该值指示是否在元素内容中保留空白区域。
- Schemas : 获取或设置与此 XmlDocument 关联的 XmlSchemaSet 对象。
- XmlResolver : 设置 XmlResolver 以用于解析外部资源。
2、方法:
- GetElementById(String) : 获取具有指定 ID 的 XmlElement。
- GetElementsByTagName(String) : 返回一个 XmlNodeList,它包含与指定 Name 匹配的所有子代元素的列表。
- ImportNode(XmlNode, Boolean) : 将节点从另一个文档导入到当前文档。Load(Stream) 从指定的流加载 XML 文档。
- Load(String) : 从指定的 URL 加载 XML 文档。。
- LoadXml(String) : 从指定的字符串加载 XML 文档。
- Save(String) : 将 XML 文档保存到指定的文件。 如果存在指定文件,则此方法会覆盖它。
- Validate(ValidationEventHandler) : 验证 XmlDocument 是不是 Schemas 属性中包含的 XML 架构定义语言(XSD) 架构。
- ReadNode(XmlReader) : 根据 XmlReader 中的信息创建一个 XmlNode 对象。 读取器必须定位在节点或属性上。
- Create****(String) : 创建具有指定 Name 的 Xml***。
- CreateNavigator() : 创建一个用于导航此文档的新 XPathNavigator 对象。
3、事件:
- NodeChanging、NodeChanged: 当属于该文档的节点的 Value 将、已被更改时发生。
- NodeInserting、NodeInserted: 将属于该文档的节点将、已插入另一个节点时发生。
- NodeRemoving、NodeRemoved: 当属于该文档的节点将、已从其父级中移除时发生。
3、XML元素:XmlElement
1、属性:
- HasAttributes : 获取一个 boolean 值,该值指示当前节点是否有任何属性。
- IsEmpty : 获取或设置元素的标记格式。
- SchemaInfo : 获取作为架构验证的结果分配给此节点的后架构验证信息集。
2、方法:
- GetAttribute(String) : 返回具有指定名称的特性的值。
- GetAttributeNode(String) : 返回具有指定名称的 XmlAttribute。
- HasAttribute(String) : 确定当前节点是否具有带有指定名称的特性。
- GetElementsByTagName(String) : 返回一个 XmlNodeList,它包含与指定 Name 匹配的所有子代元素的列表。
- RemoveAllAttributes() : 从元素移除所有指定的特性。 不移除默认特性。
- RemoveAttribute(String) : 按名称移除特性。
- RemoveAttributeAt(Int32) : 从元素中移除具有指定索引的特性节点。 (如果移除的特性有一个默认值,则立即予以替换)。
- RemoveAttributeNode(String, String) : 移除由本地名称和命名空间 URI 指定的 XmlAttribute。 (如果移除的特性有一个默认值,则立即予以替换)
三、创建与查询XML
需要添加的命名空间:
1、XmlDocument方式创建
结果:生成了名为data.xml的文件,内容如下,
2、XmlTextWriter方式创建
参见:XmlReader与 XMLWriter(抽象类)
结果:
3、创建XML片段:XmlDocument.CreateDocumentFragment()
4、加载已有的XML文件:XmlDocument.Load()
5、查询节点:SelectNodes
返回:
6、按照文本文件读取xml:StreamReader
四、添加一个结点:AppendChild
结果:在xml原有的内容里添加了一个结点,内容如下,
五、修改结点
1、修改节点的值(属性和子结点):
结果:将原来的所有结点的信息都修改了,xml的内容如下,
2、修改结点(添加结点的属性和添加结点的子结点)
结果:每个结点的属性都添加了一个,子结点也添加了一个,内容如下,
六、删除结点
1、删除节点中的某一个属性:
结果:删除了结点的一个属性和结点的一个子结点,内容如下,
2、删除结点:
结果:删除了符合条件的所有结点,原来的内容:
删除后的内容:
3、替换子元素
到此这篇关于C#使用XmlDocument操作XML的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持得得之家。
转自http://www.dedeyun.com/it/csharp/104125.html