标签:XML xml 文件 标签 DTD 文档 规则 解析 描述
文本文档 .txt
配置文件 .properties
想要解析文件 读取文件中的内容 Input
HTML
Hyper Text Markup Language
超级文本标记(标签)语言
出现这个语言的目的 服务器给浏览器发送响应信息
浏览器懂这个规则 解析语言---->进行展示
XML
EXtensible Markup Language
可扩展标记(标签)语言
创建这个XML的宗旨不是为了HTML进行扩展 关注的非展示
更多的是关注数据的存储和传输---->关注的是数据存储和传输
1.写法
创建一个文件 .xml
建议在文件的第一行 头信息
<?xml version="1.0" encoding="UTF-8" >
2.规则
结构良好的 有规则 标签对应 <xxx></xxx>
结构有效的 在结构良好的基础上遵循很多规则(写什么标签 名字叫什么 属性叫什么 几个 顺序)
如果想要让写完的xml遵循结构有效的
需要单独再写一个xml文件--->用来描述规则(类似元注解的作用)
.tld Tag Library Definition 用来描述标签的
.dtd Document Type Difinition 文档类型描述
.xsd Xml Schema Definition 用来描述xml文档内容
.xml eXtensible Markup Language 用来存储数据的文档
3.基本xml文件写法
为了让xml文件中的内容遵循某些规则
自定义dtd
第一可以写在当前的xml文件中
第二可以写在一个外部的文件中 引入
描述根标记
<!DOCTYPE school [规则]>
描述根标记中的其他标记<标签>
<!ELEMENT 元素名 类别|(元素里面的内容) >
类别 通常是EMPTY
元素内容 (其他标签,其他标签)
标签内部没有标签 是普通的文字 PCDATA
PCDATA Parsed Character DATA(通常用来描述标签中间的文字<>xxx<>)
可以被解析的字符数据 支持实体 &xxx;
>大于 <小于 &与符号 "双引号 '单引号
正常情况下 描述标签内部的子标签时候 默认认为是一个
还需要在子标签基础上增加一个 对于个数的说明
*符号 0-n个 ?符号 0-1个 +符号 1-n个
,符号 都有 |符号 a或b其中的一个
每一个标记中还需要有属性
<!ATTLIST> attribute list
<!ATTLIST 标签名 属性名 什么类型 值>
通常类型的描述
CDATA Character DATA 原封不动 (通常用来描述属性名)
(t1|t2|t3) 来描述
通常值的描述
默认值 "xxx"
值的说明 (是否是必须 固定的。。)
#REQUIRED必须 #IMPLIED非必需 #FIXED value固定的
如果想要描述实体
<!ENTITY 实体名字 "实体的值">
<!ENTITY spring "this is spring">
<div>&spring;</div>
解析XML文件内容
本质就是文件内容的读取Input
解析XML文件两种方式
DOM解析(Document Object Model)
树结构处理方式
将文档全部解析 形成一个树结构 节点---标签
优点 编程容易 缺点 必须将整个文档全部处理完毕(慢)
SAX解析(Simple Api for Xml)-----扩展
类似流媒体方式
基于事件的模式 解析时候触发一系列事件
当某一个tag标签被解析的时候 激活后续的方法
优点 快(不需要将所有文档都一次性处理完)
缺点 编写很麻烦(复用性也不强)
JDOM(Java-based Document Object Model)
外部jar包 基于DOM方式 底层提升了性能
DOM4J(Document Object Model for Java)
外部jar包 基于JDOM方式 底层提升了性能
标签:XML,xml,文件,标签,DTD,文档,规则,解析,描述 来源: https://blog.csdn.net/m0_51945027/article/details/113827701
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。