浅谈用java解析xml文档

Posted 狼牙曼巴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈用java解析xml文档相关的知识,希望对你有一定的参考价值。

    接上一篇,本文介绍使用JDOM解析xml文档,

    首先我们还是应该知道JDOM从何而来,是Breet Mclaughlin和Jason Hunter两大Java高手的创作成果,2000年初,

    JDOM作为一个开放源代码项目正式开始研发。JDOM是一种解析XML的Java工具包。

    JDOM基于树状结构,利用纯JAVA技术对XML文档实现解析、生成、序列化及其它操作。

    我们从以下步骤开始解析:

    (1)、通过JDOM的API创建一个SAXBuilder的对象

      SAXBuilder saxBuilder = new SAXBuilder();

    (2)、创建一个输入流,将xml文件加载到输入流中

      InputStream in = new FileInputStream("src/res/books.xml");

    (3)、通过saxBuilder  的builder()方法,将输入流加载到saxBuilder 中,返回一个Document对象的一个引用,

      Document document = saxBuilder.build(in );

                然后我们通过document对象获取xml的根节点。

      Element rootElement = document.getRootElement();

      接下来我们就对xml 的子节点进行操作,获取根节点下子节点list集合。

      List<Element> bookList = rootElement.getChildren();

      遍历集合 bookList,获取子节点的名称和子节点的值,

      

for (Element book : bookList) {    
                List<Attribute> attrList = book.getAttributes();                
                for (Attribute attr : attrList) {
                    // 获取属性名
                    String attrName = attr.getName();
                    // 获取属性值
                    String attrValue = attr.getValue();
                    System.out.println("属性名:" + attrName + "----属性值:"
                            + attrValue);    
                }
                // 对book节点的子节点的节点名以及节点值的遍历
                List<Element> bookChilds = book.getChildren();
                for (Element child : bookChilds) {
                    System.out.println("节点名:" + child.getName() + "----节点值:"
                            + child.getValue());
                                
                }
                    
            }

     以下是books.xml

      

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book id="1">
        <name>老人与海</name>
        <author>海明威</author>
        <year>1955</year>
        <price>45</price>
    </book>
    <book id="2">
        <name>书剑恩仇录</name>
        <year>1959</year>
        <price>24</price>
        <language>chinese</language>
    </book>    
</bookstore>

    输出的结果为:

  

属性名:id----属性值:1
节点名:name----节点值:老人与海
节点名:author----节点值:海明威
节点名:year----节点值:1955
节点名:price----节点值:45
属性名:id----属性值:2
节点名:name----节点值:书剑恩仇录
节点名:year----节点值:1959
节点名:price----节点值:24
节点名:language----节点值:chinese

    这样我们最简单的JDOM解析xml文件就完成了,总结一个JDOM的优缺点。

  优点:   ①是基于树的处理XML的Java API,把树加载在内存中
         ②没有向下兼容的限制,因此比DOM简单
         ③速度快,缺陷少
         
④具有SAX的JAVA规则
   缺点:    
①不能处理大于内存的文档
         ②JDOM表示XML文档逻辑模型。不能保证每个字节真正变换。
         ③针对实例文档不提供DTD与模式的任何实际模型。
         ④不支持与DOM中相应遍历包
    最适合于:JDOM具有树的便利,也有SAX的JAVA规则。在需要平衡时使用。

      

 

以上是关于浅谈用java解析xml文档的主要内容,如果未能解决你的问题,请参考以下文章

浅谈用java解析xml文档

浅谈用java解析xml文档

浅谈用原生 js 实现数组的 slice 方法

java解析xml的几种方式哪种最好?

浅谈用原生 js 实现函数的 bind 方法

浅谈用极大化思想解决最大子矩阵问题