XML 作者:马育民 • 2019-01-15 10:30 • 阅读:10081 # 概述 xml,全称:Extensible Markup Language,中文:可扩展标记语言 主流开发语言几乎都支持生成、解析xml ### 作用 存储数据 ### 应用场景 1. 适合网络 **传输数据**(现在以JSON为主) 2. 作为程序的 **配置文件**,配置数据库用户名、密码等信息 # XML vs HTML ### 相同点: xml与html类似,都有标签名、属性 ### 不同点: xml: - xml的标签、属性都是 **自定义** 的 - 并且 **写法要求严格**,标签必须成对出现(要有关闭标签) - 用于 **保存数据** html: - html的标签、属性是固定的 - 写法要求不严格,标签不必成对出现(可以没有关闭标签) - 用于 **展示页面** # XML vs JSON 现在json格式很流行,在互联网、跨平台传输数据时,部分替代xml(没有完全替代) # XML组成部分 ### 文档声明 必须要有文档声明 ``` <?xml version='1.0' encoding='UTF-8'?> ``` **解释:** - `version`: 是版本号 - `encoding`: 是 xml 的文件编码 ### 注释 和 html 注释 一样: ``` <!-- 注释标签 --> ``` ### 元素(标签) 相当于 HTML 中的标签,特点如下: - XML 中的标签都是 **自定义** 的,并且写法要求 **严格** - 必须有且仅有一个 **根元素** - **大小写敏感** - 标签必须 **闭合** - 元素可以包含元素,或者包含文本内容 - **不要有特殊符号**,如:`<`、`&` 等,否则需要额外处理 ``` <?xml version='1.0' encoding='UTF-8'?> <students> <!-- 成对标签 --> <student><!-- 包含元素 --> <name>鹿晗</name><!-- 包含文本内容 --> <age>25</age> <gender>男</gender> </student> <!-- 单标签 --> <student/> </students> ``` ### 命名规则 - 名称以字母开头,后面可以是:字母、**数字**、`_` - 名称不能包含空格 ### 元素(标签)的属性 类似 HTML标签的属性,XML属性值要有 **双引号** 或 **单引号** 包围,否则会出问题 ``` <?xml version='1.0' encoding='UTF-8'?> <students> <student name="鹿晗" age="25" gender="男" ></student> </students> ``` ### 文本区域(CDATA 区) CDATA 区 可以存放特殊字符 ``` <![CDATA[ 这里可以把你输入的字符原样显示,不会解析 xml ]]> ``` 例子: ``` <?xml version='1.0' encoding='UTF-8'?> <students> <!-- 成对标签 --> <student> <name> <![CDATA[ ^&<>*#% ]]> </name> <age>25</age> <gender>男</gender> </student> </students> ``` # 例子 ### 用于传输数据 ``` <?xml version='1.0' encoding='UTF-8'?> <students> <student name="鹿晗" age="25" gender=“中性” ></student> <student name="凤姐" age="28" gender=“女汉子” ></student> </students> ``` ### 作为配置文件 ``` <?xml version='1.0' encoding='UTF-8'?> <conf> <db username='root' password='123456'> </conf> ``` ### 爬虫文章保存为xml ``` <?xml version='1.0' encoding='utf-8'?> <articles> <article title="解析xml" time="2020-03-15 12:00" like_num="593" discuss_num="327" authon="张三"> <abstract>xml,全称:Extensible Markup Language</abstract> <content>xml,全称:Extensible Markup Language,中文:可扩展标记语言主流开发语言几乎都支持生成、解析xml<</content> </article> </articles> ``` ### 计算机视觉数据集描述文件 ``` <annotation> <folder>OXIIIT</folder> <filename>Abyssinian_1.jpg</filename> <source> <database>OXFORD-IIIT Pet Dataset</database> <annotation>OXIIIT</annotation> <image>flickr</image> </source> <size> <width>600</width> <height>400</height> <depth>3</depth> </size> <segmented>0</segmented> <object> <name>cat</name> <pose>Frontal</pose> <truncated>0</truncated> <occluded>0</occluded> <bndbox> <xmin>333</xmin> <ymin>72</ymin> <xmax>425</xmax> <ymax>158</ymax> </bndbox> <difficult>0</difficult> </object> </annotation> ``` 原文出处:/show_1EF2cBKXAgYs.html