XML学习笔记
1.XML是啥
1.1 简介
- 主要功能:实现程序间的数据传输、配置文件
config.xml
、存储数据充当小型数据库 - 规范数据格式,是数据具有结构性
1.2 what is XML?
- XML:可拓展性标记语言
- 用于传输和存储数据,而不是展示数据
- 标签必须自定义
<root>
<user>董小D</user>
<age>23</age>
</root>
- XML和HTML的区别
- HTML的标签不能自定义、XML的标签可以自定义
- HTML的语法不严格、XML的语法非常严格
- HTML用于展示数据、XML用于存储和传输数据
2.语法规则
2.1 基本语法
-
必须有根结点(仅能有一个)如下为错误案例
<root> <student>尼古拉</student> </root> <root1> <student>赵四</student> </root1>
-
XML头声明可有可无
<?xml version="1.0" encoding="UTF-8"?>
- 所有的XML元素都必须是成对标签
- 标签名大小写敏感
- 标签不能交叉
- 注释方法
<root>
<user>董小董</user>
<!--<age>23</age>-->
</root>
-
特殊字符需要实体转义字符
-
标签的名字可以一样
-
命名空间
-
造成命名冲突的情况:两个不同文档使用了相同的元素名
-
通过使用前缀来避免命名冲突
-
1.定义前缀
-
命名空间通过元素
xmlns
属性定义xmlns:ns="http://www.dzc.com"
-
方式一:在用到该重名元素的时候再定义其属于的命名空间
<root> <ns:student xmlns:ns="http://www.dzc.com"> <stu>董小董</stu> </ns:student> 注:ns是前缀表示一个命名空间 student是重名元素 <fs:student xmlns:fs="http://www.fzc.com"> <stu>冯照成</stu> </fs:student> </root>
-
方式二:将命名空间定义在根元素中声明
<root xmlns:ns="http://www.dzc.com" xmlns:fs="http://www.fzc.com"> <ns:student> <stu>董小董</stu> </ns:student> 注:ns是前缀表示一个命名空间 student是重名元素 <fs:student> <stu>冯照成</stu> </fs:student> </root>
-
-
-
-
XML 以 LF 存储换行
2.2 元素属性
属性就是描述标签的一些额外信息
<root>
<student>
<user>董小董</user>
<age>23</age>
</student>
<student>
<user age = "23"> Dong</user>
</student>
</root>
- 一个标签可以有多个属性,属性值需要用引号引起来
- 基本不怎么用,还会增加额外的解析代码
2.3 使用CDATA语法不解析指定文本
<![CDATA[需要不解析的文本内容]]>
例如:
<root>
<student>
<user age = "23"> <![CDATA[a>b,c<d]]></user>
</student>
</root>
- 特殊字符较多时,使用CDATA语法
- CDATA不允许嵌套
2.4 XML的DTD和XML Schema
- DTD和Schema都定义了XML文档的结构,但是XML Schema更加常用。
3.解析XML
[C#操作XML方法详解 - 孤夏 - 博客园 (cnblogs.com)]:
[C++中XML的读写操作 - htj10 - 博客园 (cnblogs.com)]:
4.生活中的XML案例
- XMLX新闻
<?xml version="1.0" encoding="ISO-8859-1"?>
<nitf>
<head>
<title>Colombia Earthquake</title>
</head>
<body>
<headline>
<hl1>143 Dead in Colombia Earthquake</hl1>
</headline>
<byline>
<bytag>By Jared Kotler, Associated Press Writer</bytag>
</byline>
<dateline>
<location>Bogota, Colombia</location>
<date>Monday January 25 1999 7:28 ET</date>
</dateline>
</body>
</nitf>