一、XML DOM、XMLDocument
一、XML DOM概述
XML 文档大小写敏感、属性用引号括起来,每一个标记都要闭合。
DOM是XML文档的内存中树状的表示形式。
继承关系图:
XmlNode;//XML节点 ......XmlDocument;//XML文档 ............XmlDataDocument;//与Dataset相关的文档 ......XmlDocumentFragment;//文档片段 ......XmlLinkedNode;//连接节点(抽象类) ............XmlDeclaration;//XML声明:<?xml version='1.0' ..?> ............XmlDocumentType;//文档类型 ............XmlElement;//元素 ............XmlEntityReference;//实体引用节点 ............XmlProcessingInstruction;//处理指令 ............XmlCharacterData;//字符数据(抽象类) ..................XmlCDataSection;//CDATA节 ..................XmlComment;//注释 ..................XmlSignificantWhitespace;//有效空白 ..................XmlWhitespace;//空白 ..................XmlText;//元素或属性的文本内容 ......XmlAttribute;//属性 ......XmlEntity;//实体声明<!Entity..> ......XmlNotation;//表示法声明<!Notation...>
二、XMl节点:XmlNode
1、属性:
- ChildNodes : 获取节点的所有子节点。
- FirstChild : 获取节点的第一个子级。
- HasChildNodes :获取一个值,该值指示此节点是否有任何子节点。
- LastChild : 获取节点的最后一个子级。
- ParentNode : 获取该节点的父级(针对可以拥有父级的节点)。
- NextSibling : 获取紧接在该节点之后的节点。
- PreviousSibling : 获取紧接在该节点之前的节点。
- InnerText : 获取或设置节点及其所有子节点的串连值。
- InnerXml : 获取或设置仅表示该节点的子节点的标记。
- OuterXml : 获取包含此节点及其所有子节点的标记。
- 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 以浏览此对象。
三、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) 架构。
- CloneNode(Boolean) : 创建此节点的副本。
- ReadNode(XmlReader) : 根据 XmlReader 中的信息创建一个 XmlNode 对象。 读取器必须定位在节点或属性上。
- WriteContentTo(XmlWriter) : 将 XmlDocument 节点的所有子级保存到指定的 XmlWriter 中。
- WriteTo(XmlWriter) : 将 XmlDocument 节点保存到指定的 XmlWriter。
- Create****(String) : 创建具有指定 Name 的 Xml***。
- CreateNavigator() : 创建一个用于导航此文档的新 XPathNavigator 对象。
3、事件:
- NodeChanging、NodeChanged 当属于该文档的节点的 Value 将、已被更改时发生。
- NodeInserting、NodeInserted 将属于该文档的节点将、已插入另一个节点时发生。
- NodeRemoving、NodeRemoved 当属于该文档的节点将、已从其父级中移除时发生。
四、XML元素:XmlElement
1、属性:
- Attributes : 获取包含该节点特性列表的 XmlAttributeCollection。
- HasAttributes : 获取一个 boolean 值,该值指示当前节点是否有任何属性。
- IsEmpty : 获取或设置元素的标记格式。
- SchemaInfo : 获取作为架构验证的结果分配给此节点的后架构验证信息集。
2、方法:
- GetAttribute(String) : 返回具有指定名称的特性的值。
- GetAttributeNode(String) : 返回具有指定名称的 XmlAttribute。
- HasAttribute(String) : 确定当前节点是否具有带有指定名称的特性。
- GetElementsByTagName(String) : 返回一个 XmlNodeList,它包含与指定 Name 匹配的所有子代元素的列表。
- RemoveAll() : 移除当前节点的所有指定特性和子级。 不移除默认特性。
- RemoveAllAttributes() : 从元素移除所有指定的特性。 不移除默认特性。
- RemoveAttribute(String) : 按名称移除特性。
- RemoveAttributeAt(Int32) : 从元素中移除具有指定索引的特性节点。 (如果移除的特性有一个默认值,则立即予以替换)。
- RemoveAttributeNode(String, String) : 移除由本地名称和命名空间 URI 指定的 XmlAttribute。 (如果移除的特性有一个默认值,则立即予以替换)
- CloneNode(Boolean) : 创建此节点的副本。
- WriteContentTo(XmlWriter) : 将该节点的所有子项保存到指定的 XmlWriter 中。
- WriteTo(XmlWriter) : 将当前节点保存到指定的 XmlWriter 中。
五、实例
查找节点:SelectNodes
string str = @"<JZD_Message xmlns:xsd=""http://www.w3.org/2001/XMLSchema""
xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
xmlns=""https://api.xiaoheer.com/"" >
<ErrorRes>
<Err_code>200</Err_code>
<Err_content>认证信息匹配</Err_content>
</ErrorRes>
</JZD_Message>";
var xd = new System.Xml.XmlDocument();
xd.LoadXml(str);//xml加载xml字符串
XmlNamespaceManager nsManager = new XmlNamespaceManager(xd.NameTable);//创建一个命名空间管理器
nsManager.AddNamespace("xsd", "http://www.w3.org/2001/XMLSchema");//添加字符串时,命名空间管理器将会原子化这些字符串。
nsManager.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
nsManager.AddNamespace("amon", "https://api.xiaoheer.com/");
var rowNoteList = xd.SelectNodes("//amon:ErrorRes", nsManager);//查找节点
Console.WriteLine(rowNoteList[]);
返回:
<ErrorRes xmlns="https://api.xiaoheer.com/">
<Err_code>200</Err_code>
<Err_content>认证信息匹配</Err_content>
</ErrorRes>
一、XML DOM、XMLDocument的更多相关文章
- C#(1):XML DOM、System.Xml.XmlDocument
一.XML DOM概述 XML 文档大小写敏感.属性用引号括起来,每一个标记都要闭合. DOM是XML文档的内存中树状的表示形式. 继承关系图: XmlNode;//XML节点 ......Xml ...
- js ajax 传送xml dom对象到服务器
客户端代码 1 <script> var isie = true; var xmlhttp = null; function createXMLHTTP() {//创建XMLXMLHttp ...
- htm Dom对象与 Xml Dom对象的理解
html 是基于Xml的文档规范.是一种特殊的xml文档,这一点很重要 1.xml 文档的操作,java,c#,...各种语言都提供了很好的api对文档进行解析,操作.当然js 也不例外,提供了一系列 ...
- python 解析XML python模块xml.dom解析xml实例代码
分享下python中使用模块xml.dom解析xml文件的实例代码,学习下python解析xml文件的方法. 原文转自:http://www.jbxue.com/article/16587.html ...
- python 应用xml.dom.minidom读xml
xml文件 <?xml version="1.0" encoding="utf-8"?> <city> <name>上海&l ...
- XML DOM 循环(foreach)读取PHP数据 和 PHP 编写 XML DOM 【转载】
用 PHP 读取和编写可扩展标记语言(XML)看起来可能有点恐怖.实际上,XML 和它的所有相关技术可能是恐怖的,但是用 PHP 读取和编写 XML 不一定是项恐怖的任务.首先,需要学习一点关于 XM ...
- PHP XML DOM
PHP XML DOM 内建的 DOM 解析器使在 PHP 中处理 XML 文档成为可能. DOM 是什么? W3C DOM 提供了针对 HTML 和 XML 文档的标准对象集,以及用于访问和操作这些 ...
- JavaScript 【 IE中的XML DOM 】
IE中的 XML DOM 在统一的正式规范出来以前,浏览器对于XML的解决方案各不相同.DOM2级提出了动态创建XML DOM规范,DOM3进一步增强了XML DOM.所以,在不同的浏览器实现XML的 ...
- 自学XML DOM的几个例子
XML DOM定义了如何获取.修改.添加和删除XML文件中结点的接口,极大方便了开发者对XML文件的使用.XML DOM教程和手册请转:http://www.w3school.com.cn/xmldo ...
随机推荐
- a标签添加移除事件及开启禁用事件
一.添加移除点击事件 <script type="text/javascript" src="jquery.min.js"></script& ...
- <automate the boring stuff with python> 正则强口令实例
书中7.18的强口令实践题 写一个函数,它使用正则表达式,确保传入的口令字符串是强口令.强口令的定义是: 长度不少于8 个字符,同时包含大写和小写字符,至少有一位数字. 你可能需要用多个正则表达式来测 ...
- todo---java中的json探讨
1.json的命名格式 2.json赋值原则 3.json常用的工具 4.json的处理的第三方软件比较 5.json的起源 6.关于json串的对于null ,"" 的不同的第三 ...
- java多线程中篇(二) —— 线程的创建和Synchronized锁关键字
学习之前,先了解线程状态图 说明:线程共包括以下5种状态. 1. 新建状态(New) : 线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread ...
- java当中JDBC当中请给出一个sql server的helloworld例子
[学习笔记] 1.sql server的helloworld例子: import java.sql.*; public class JdbcHelloSqlServer { public stati ...
- dedecms5.7怎么安装百度编辑器
用过dedecms的朋友都知道dede自带的文本编辑器很不好用,且有些功能还需要我们自己手动去修改源码,才能完成我们想要的效果.现在广大用dedecms的朋友们,你们有福啦!我们可以利用百度的Uedi ...
- python 之 并发编程(进程池与线程池、同步异步阻塞非阻塞、线程queue)
9.11 进程池与线程池 池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 池子内什么时候装进程:并发的任务属于计算密集型 池子内什么时候装线程:并发的任务属于I ...
- markdown语法之列表与缩进
在markdown语法中, 用*或+或-在行首表示无序列表.在这些符号之后应该空一格然后输入内容. 例如 + 无序列表 * 无序列表 - 无序列表 会被markdown语法渲染为 无序列表 列表嵌套 ...
- 怎样检测浏览器是否安装了某个插件, 比如flash
首先, 我们可以获取浏览器安装的所有在插件: navigator.plugins 它会返回一个类似数组的对象, 包含所有已安装插件的具体信息. navigator.plugins; 然后我们可以通过正 ...
- kafka的生产者配置以及发送信息的三种方式
1.Fire-and-forget 这种方式是不管发送成功与否,客户端都会返回成功.尽管大多数的时候Kafka 在发送失败后,会自己重新自动再一次发送消息,但是也会存在丢失消息的风险 Producer ...