Xml基础01

2023-11-30 18:53:13 浏览数 (2)

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 删除某一个属性

0 人点赞