xml是什么?
X(extensible,可扩展的),M(markup,标签),L(language,语言)
作用:
1、存储数据,比如游戏中的等级装备等;
2、传输数据,网络中传输数据;
3、配置文件,.properties,.xml
特点:
1、平台无关性
2、xml发布之后的所有语言都支持xml
3、自我描述性(内容自定义)
语法规则
1、xml文件必须有根元素
2、xml元素(标签)有开必有合
3、xml元素对大小写敏感
4、xml元素必须正确嵌套
5、xml元素属性必须加引号(单双都可以)
(1)html文件中,所有元素(标签)都是官方定义好的,我们直接引用
(2)xml文件中,所有元素自定义
CDATA区
在xml中书写特殊富豪时,报错,忽略其本性,变成普通的字符串。
<![CDATA[ 10 <5 ]]>
DTD文件
1、DTD的英文:document type definition 文档类型定义
2、DTD作用是规范xml中的标签
3、dtd跟xml的联系就如同类和对象的关系(mybatis文件中会引用该方式)
dtd
<!ELEMENT students (student*)>
<!ELEMENT student (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
xml
<!DOCTYPE students SYSTEM "test2.dtd">
<students>
<student>
<name></name>
<age></age>
</student>
</students>
XSD文件
1、xsd是xml结构定义
2、xsd是dtd的替代品,比dtd高端
3、xsd的优点
1)xsd的代码基于xml,没有专门的语法,和xml一样的解析和处理
2)xsd支持一系列的数据类型
解析xml
1、DOM解析
2、SAX解析
3、JDOM解析
4、DOM4J解析
前两种属于基础方法,是官方提供的与平台无关的解析方式;
后两种属于扩展方法,他们是在基础的方法之上扩展出来的,只适用于java平台。
DOM解析
dom解析的原理解析xml的时候,把文档中的所有元素按照其出现的层次关系,在内存中构造出树形结构。
dom的优点就是可以遍历和修改节点的内容。
缺点是内存压力较大,解析较慢。
SAX解析
是一种xml解析的替代方法
相对比dom方式,sax是一种速度更快,更有效的方法
不能修改节点内容
JDOM解析
仅适用于具体的类,而不用接口,不灵活
DOM4J(重点,性能最高)
JDOM的一种智能分支,合并类许多超出基本xml文档的
案例
//1、将xml文件放入jvm内存中
InputStream is = TextXml.class.getClassLoader().getResourceAsStream("文件地址");
//2、获取文档对象,转换为一个文档对象
SAXReader sax = new SAXReader();
Document doc = sax.read(is);
//3、获得根元素
Element root = doc.getRootElement();
//4、获取根元素下的所有子元素
List<Element> list = root.elements();
//5、遍历根下子元素并获取值
for(Element e1 : list){
LIst<Element> list2 = e1.elements();
for(Element e2 : list2){
System.out.println(e2.getName()+":"+e2.getData());
}
}
//6、遍历元素的属性并获取值
for(Element e1 : list){
Attribute type = e1.attribute("type");
System.out.println(type.getValue);
}
网友评论