码迷,mamicode.com
首页 > Windows程序 > 详细

C#(1):XML DOM、XMLDocument

时间:2020-05-13 16:30:02      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:char   默认值   handler   ant   har   str   manage   system   覆盖   

一、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成员

1、XMl节点:XmlNode

1、属性:

  • Child?Nodes : 所有子节点。
  • First?Child : 第一个子级。
  • Has?Child?Nodes  :获是否有任何子节点。
  • Last?Child :最后一个子节点。
  • Parent?Node : 父节点(针对可以拥有父级的节点)。
  • Next?Sibling : 紧接在该节点之后的兄弟节点。
  • Previous?Sibling : 紧接在该节点之前的兄弟节点。
  • Inner?Text : 节点及其所有子节点的文本值。
  • Inner?Xml :子节点的XML标记。
  • Outer?Xml : 此节点及其所有子节点XML标记。
  • Node?Type : 获取当前节点的类型。
  • Value :节点的值。
  • Attributes : 节点的特性XmlAttributeCollection。
  • Owner?Document : 节点所属的 XmlDocument。

2、方法:

  • Append?Child(Xml?Node) :    添加到该节点的子节点列表的末尾。
  • Prepend?Child(Xml?Node)  :   追加到该节点的子节点列表的开头。
  • Insert?After(Xml?Node, Xml?Node)  :   将指定的节点紧接着插入指定的节点之后。
  • Insert?Before(Xml?Node, Xml?Node)  :   将指定的节点紧接着插入指定的节点之前。
  • Remove?All() :    移除当前节点的所有子节点和/或属性。
  • Remove?Child(Xml?Node) :    移除指定的子节点。
  • Replace?Child(Xml?Node, Xml?Node)  :   用 oldChild 节点替换子节点 newChild。
  • Select?Nodes(String) :    选择匹配 XPath 表达式的节点列表。
  • Select?Single?Node(String) :    选择匹配 XPath 表达式的第一个 XmlNode。
  • Write?Content?To(Xml?Writer)  :   当在派生类中被重写时,该节点的所有子节点会保存到指定的 XmlWriter 中。
  • Write?To(Xml?Writer)  :   当在派生类中被重写时,将当前节点保存到指定的 XmlWriter 中。
  • Clone() :    创建此节点的副本。
  • Clone?Node(Boolean)  :   当在派生类中被重写时,创建该节点的副本
  • Create?Navigator() :    创建 XPathNavigator 以浏览此对象。

2、XML文档:XMLDocument

1、属性:

  • Document?Element : 获取文档的根 XmlElement。
  • Document?Type : 获取包含 DOCTYPE 声明的节点。
  • Preserve?Whitespace : 获取或设置一个值,该值指示是否在元素内容中保留空白区域。
  • Schemas : 获取或设置与此 XmlDocument 关联的 XmlSchemaSet 对象。
  • Xml?Resolver : 设置 XmlResolver 以用于解析外部资源。

2、方法:

  • Get?Element?ById(String)  :   获取具有指定 ID 的 XmlElement。
  • Get?Elements?ByTag?Name(String)  :   返回一个 XmlNodeList,它包含与指定 Name 匹配的所有子代元素的列表。
  • Import?Node(Xml?Node, Boolean)   :  将节点从另一个文档导入到当前文档。Load(Stream)    从指定的流加载 XML 文档。
  • Load(String) :    从指定的 URL 加载 XML 文档。。
  • Load?Xml(String)  :   从指定的字符串加载 XML 文档。
  • Save(String) :    将 XML 文档保存到指定的文件。 如果存在指定文件,则此方法会覆盖它。
  • Validate(Validation?Event?Handler)  :   验证 XmlDocument 是不是 Schemas 属性中包含的 XML 架构定义语言(XSD) 架构。
  • Read?Node(Xml?Reader)  :   根据 XmlReader 中的信息创建一个 XmlNode 对象。 读取器必须定位在节点或属性上。
  • Create?****(String)  :   创建具有指定 Name 的 Xml***。
  • Create?Navigator()  :   创建一个用于导航此文档的新 XPathNavigator 对象。

3、事件:

  • Node?Changing、Node?Changed:    当属于该文档的节点的 Value 将、已被更改时发生。
  • Node?Inserting、Node?Inserted:    将属于该文档的节点将、已插入另一个节点时发生。
  • Node?Removing、Node?Removed:    当属于该文档的节点将、已从其父级中移除时发生。

3、XML元素:XmlElement

1、属性:

  • Has?Attributes  :   获取一个 boolean 值,该值指示当前节点是否有任何属性。
  • Is?Empty :    获取或设置元素的标记格式。
  • Schema?Info :    获取作为架构验证的结果分配给此节点的后架构验证信息集。

2、方法:

  • Get?Attribute(String)  :   返回具有指定名称的特性的值。
  • Get?Attribute?Node(String) :    返回具有指定名称的 XmlAttribute。
  • Has?Attribute(String) :    确定当前节点是否具有带有指定名称的特性。
  • Get?Elements?ByTag?Name(String)  :   返回一个 XmlNodeList,它包含与指定 Name 匹配的所有子代元素的列表。
  • Remove?All?Attributes()  :   从元素移除所有指定的特性。 不移除默认特性。
  • Remove?Attribute(String) :    按名称移除特性。
  • Remove?Attribute?At(Int32) :    从元素中移除具有指定索引的特性节点。 (如果移除的特性有一个默认值,则立即予以替换)。
  • Remove?Attribute?Node(String, String) :    移除由本地名称和命名空间 URI 指定的 XmlAttribute。 (如果移除的特性有一个默认值,则立即予以替换)

三、实例

查找节点: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[0]);

返回:

<ErrorRes xmlns="https://api.xiaoheer.com/">
              <Err_code>200</Err_code>
              <Err_content>认证信息匹配</Err_content>
</ErrorRes>

C#(1):XML DOM、XMLDocument

标签:char   默认值   handler   ant   har   str   manage   system   覆盖   

原文地址:https://www.cnblogs.com/springsnow/p/12883050.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!