xml 在java 中的应用

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中书写特殊富豪时,报错,忽略其本性,变成普通的字符串。

DTD文件

1、DTD的英文:document type definition 文档类型定义
2、DTD作用是规范xml中的标签
3、dtd跟xml的联系就如同类和对象的关系(mybatis文件中会引用该方式)

dtd





xml



    
        
        
    

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 list = root.elements();
//5、遍历根下子元素并获取值
for(Element e1 : list){
    LIst 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);
}

你可能感兴趣的:(xml 在java 中的应用)