Cheug's Blog

当前位置:网站首页 / JAVA / 正文

XML解析

2019-05-10 / JAVA / 1122 次围观 / 0 次吐槽 /

xml解析就是读写xml的意思

 

XML解析思想【重点】:

            DOM解析:

            将文档加载进内存,形成一颗dom(document对象),将文档的各个组成部分封装为一些对象。

            优点:因为,在内存中会形成dom树,可以对dom树进行增删改查。

            缺点:dom树非常占内存,解析速度慢。

             

            SAX解析

            逐行读取,基于事件驱动

            优点:不占内存,速度快

            缺点:只能读取,不能回写(改数据)

 

XML常用的解析器

            JAXP

            sun公司提供的解析。支持domsaxJAXPJava API for XMLProcessing,意为XML处理的Java API,它提供解析和验证XML文档的能力。

            JDOM

            JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。

            DOM4J

            dom for java

            dom4j是一个JavaXML APIjdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术

DOM4J解析

        DOM4JSAX使用

                    根据文档来写

                    第一步:导入包

                    image.png   包下载: dom4j-1.6.1.zip

        XPATH:

                专门用于查询,它定义了一种规则。

                使用的方法:

                selectSingleNode():

                selectNodes():

                使用步骤:

                1注意:要导包 jaxen...jar

                2、创建解析器SAXReader reader = new SAXReader();

                3、解析xml 获得document对象 Document document = reader.read(url);

   XPath规则:

                    // nodename 选取此节点。

                    /  从根节点选取。

                    ..  选取当前节点的父节点。

                    @  选取属性。

                    [@属性名]    属性过滤

                    [标签名]     子元素过滤

    image.png

     修改节点保存

public static void main(String[] args) throws Exception {
    SAXReader reader = new SAXReader();
    
    Document doc = reader.read(new FileInputStream("xml/books.xml"));
     
    List list = doc.selectNodes("//书/@出版社");
    
        for(Object o : list){
                if(o instanceof Attribute){
                Attribute att = (Attribute) o;
                att.setValue("美国");
            }
        }
        
     XMLWriter writer = new XMLWriter(new FileOutputStream("xml/books.xml"));    
     writer.write(doc); 
}


Powered By Cheug's Blog

Copyright Cheug Rights Reserved.