xml是可扩展的标记语言,结构性,传输性,方便开发者开发
html是超文本的标记语言,观赏性,给用户看的
XML作用如下:
1、容器:可以用来保存数据
2、文件:可以用来做配置文件
3、传输:可以用来做数据传输载体
文档声明
<?xml version="1.0" ? encoding="gbk" ? standalone="no" ?>
encoding:解析xml中的文字的时候,使用什么编码来翻译
standalone:no-该文档依赖关联其他文档
如果想让xml正常显示中文,有两种解决办法:
1、让encoding设置GBK
2、让encoding设置GB2312
注释
<!--XML注释-->
非法字符
XML中一些字符不能直接表示,需要用特殊的字符表示。
< <
& &
XML的解析方式
解析 XML 文件一般来说有两种底层形式:DOM+SAX
1、DOM:把整个xml全部读取到内存中,形成树状结构,可以进行增删。
如果xml特别大,将造成内存溢出。
2、SAX:读取一行,解析一行,不能进行增删。
XML解析器
1、而在这两种解析方式的基础上,基于底层api的更高级封装解析器也应用而
生,比如面向Java的jaxp/jdom/dom4j。
2、其中dom4j是通过dom4j的jar包可以解析XML文件内容。
面试:
面试回答:xml解析方式有很多种,常用的有两种。
针对两种解析方式的API:一些组织或者公司,针对以上两种解析方式,给出的解析方案有哪些?
jaxp(sun公司)
jdom
dom4j(使用比较广泛)---(当牧放债)
XML约束
把XML比作文章,那么dom4j类似于翻译文章,而约束类似于写文章的格式。
DTD约束
//DTD约束文档
<!ELEMENT stus (stu)>
<!ELEMENT stu (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT stu id ID #IMPLIED>
<!--XML实例文档-->
<stus>
<stu id="10086">
<age>18</age>
<name>zhangsan</name>
</stu>
<stu id="10086">
<name>lisi</name>
<age>28</age>
</stu>
</stus>
Schema约束
<!--Schema约束文档-->
<!--
xmlns : 命名空间
targetNamespace:目标名称空间
elementFormDefault:元素的格式化情况
-->
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/NewXMLSchema"
xmlns:tns="http://www.example.org/NewXMLSchema"
elementFormDefault="qualified">
<element name="teachers">
<complexType>
<sequence>
<!-- 复杂元素 -->
<element name="teacher">
<complexType>
<sequence>
<!-- 简单元素 -->
<element name="name" type="string"></element>
<element name="age" type="int"></element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
<!--schema实例文档-->
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/NewXMLSchema" xmlns:tns="http://www.example.org/NewXMLSchema" elementFormDefault="qualified">
</schema>
<teachers
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.itheima.com/teacher"
xsi:schemaLocation="http://www.itheima.com/teacher teacher.xsd"
>
<teacher>
<name>zhangsan</name>
<age>19</age>
</teacher>
<teacher>
<name>lisi</name>
<age>19</age>
</teacher>
<teacher>
<name>wangwu</name>
<age>19</age>
</teacher>
</teachers>