Xml基础01
概念:
可扩展的标记语言,是以简单文本格式存储数据的方式。可用于序列化反序列化(序列化是通过将对象转换为字节流,从而存储对象或将对象传输到内存,数据库或文件的过程。主要用途是保存对象的状态,包括对象的数据,以便能够在需要是重建对象。反向过程称为 反序列化。)
xml的元素 - element:
由一对尖括号和尖括号斜杠共同组成一个最基本的元素。例如 <> </>,在内部是xml的标签标记。尖括号的中间是内容。
如 : <book>西游记</book>
<title>西游记</title>
<auther>吴承恩</auther>
标签之间可以有包含的关系,互相嵌套的关系(不过不建议使用,代码过于复杂不便于阅读)
xml的元素和属性
属性: <book title=‘西游记’>
</book>
元素和属性的区别:
同是存储数据的方式
区别不大
元素不能进行复杂对象的描述
xml的声明
声明文件格式,版本,编解码。
代码语言:javascript复制<?xml version="1.0"?>
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="GBK" ?>
xml的注释
注释符号
代码语言:javascript复制<!-- -->
xml的结构
Xml提供了一种结构化的组织数据的方式,不同于关系数据库。
Xml数据是分层组织的,有点类似windows explorer中的文件夹和文件。
每一个文档必须有一个根元素,其中包含所有的元素和文本数据。(即必须要有一个根的标签元素,其他的标签元素都被它包含)
代码语言:javascript复制<?xml version="1.0"?>
<books>
<book></book>
</books>
<!--这是合法的->
xml的命名空间
即为xml命名一个名字。
例如下表:
代码语言:javascript复制<?xml version="1.0"?>
<books xmlns:myNS="123123">
<book></book>
</books>
xml的规则
1.必须有声明语句
<? xml version=“1.0” ?>
2.有且只有1个根元素
3.每一个元素都有闭标记
4.没有有重叠元素—所有的子元素必须完全嵌套在父元素内
5.所有的属性必须放在引号内
DTD文档定义类型
不允许规定元素和属性的数据类型(对xml文件的规定约束)
schema
常用的XSD XML Schema Deinition language
在.net中也称为XML架构,可以规定元素和属性的数据结构,以.xsd文件方式存储
命名空间:
http://www.w3.org/2001/XMLSchema 根元素: <schema></schema>
代码语言:javascript复制<?xml version="1.0"encoding="utf-8"?>
<xs:schema id="SchemaBooks"
targetNamespace="http://tempuri.org/SchemaBooks.xsd"
elementFormDefault="qualified"
xmins="http://tempuri.org/SchemaBooks.xsd"
xmlns:mstns="http://tempuri.org/SchemaBooks.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Books">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="Book">
<xs:complexType>
<xs:sequence>
<xs:element name="title"type="xs:string"/>
<xs;element name="price"type="xs:decimal"/>
</xs;sequence>
</xs:complexType>
</xs:element>
</xs;choice>
</xs:complexType>
</xs:element>
</xs:schema>
<!--schema 文档根路径(元素)
element 结点
choice 复杂结点
maxOccurs 节点数量限制
unbounded 是否有限制
complexType 指定该标签下的元素类型->
xml与xsd关联
在vs中,可以通过
代码语言:javascript复制System.Data.DataSet ds = new System.Data.DataSet();
ds.ReadXml("");
ds.WriteXmlSchema("");
//可以将xml文件读取并转换为xsd文件
xsd的几个常见默认值:
xmlns:xs=http://www.w3.org/2001/XMLSchema
schema规范中定义了一些基本的数据类型的命名空间
targetNamespace=http://tempuri.org/SchemaBookStore.xsd
该 schema 的命名空间的 URI 引用。
xmlns=http://tempuri.org/SchemaBookStore.xsd
本XSD命名空间
xmlns:mstns=http://tempuri.org/SchemaBookStore.xsd
本XSD命名空间,前缀名称为mstns
文档对象模型
Document Object Model, DOM
基于对象(基于树)(适合于对象的提取等)
SAX
Simple API for XML
基于流、推模型(性能更好,在读取解析数据时更适合)
DOM 文档对象模型主要类
XmlNode:表示 XML 文档中的单个节点。
XmlDocument:表示 XML 文档,继承自XmlNode 。
XmlElement:表示一个元素。
XmlAttribute表示一个属性
XmlText:表示元素文本内容。
XmlComment表示 XML 注释的内容。
XmlNodeList表示节点集合。
XmlNode.ChildNodes - 返回包含节点所有子级的 XmlNodeList。
XmlNode.SelectNodes - 返回包含匹配 XPath 查询的节点集合的 XmlNodeList
XmlDocument的使用
定义****XmlDocument
XmlDocument document = new XmlDocument();
加载XMl文件
document.Load(“XML文件”);
命名空间
using System.Xml;
常用属性:
FirstChild获取节点的第一个子级。 (继承自 XmlNode。)
DocumentElement 获取文档的根 XmlElement。
常用方法
Load()
Save()
获取根节点
document.FirstChild
获取根元素
document.DocumentElement
关于XmlNode的几个重要属性
FirstChild
LastChild
HasChildNodes
ParentNode
NextSibling
使用DOM创建xml文件
创建节点:
XmlDocument****方法
CreateNode 节点
CreateElement 元素
CreateAttribute 属性
CreateTextNode 内容
CreateComment 注释
插入节点:
XmlNode****方法
AppendChild 最后添加
InsertAfter 前添加
InsertBefore 后添加
删除节点:
XmlNode方法
RemoveAll 删除全
RemoveChild 删除某一个
RemoveAttribute 删除某一个属性