Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 403|回复: 0

[xml学习]JDOM入门:使用JDOM解析XML

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-9 23:51:38 | 显示全部楼层 |阅读模式
    使用JDOM解析XML
    一、前言
         JDOM是Breet Mclaughlin和Jason Hunter两大java高手的创作成果,2000年初,JDOM作为一个开放源代码项目正式开始研发。JDOM是一种解析XML的Java工具包。      DOM适合于当今流行的各种语言,包括Java,JavaScripte,VB,VBScript,Perl,C,C++等。它了为HTML和XML文档提供了一个可应用于不同平台的编程接口。W3C DOM的最新信息可从http://www.w3.org/TR2001/WD-DOM-Lever-3-Core-20010913查阅。微软在http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk30/htm/xmconxmldomuserguide.asp上也有DOM的详细技术信息。     DOM的设计为了适用于不同的语言,它保留了不同语言中非常相似的API。但是它并不适合于Java编程者的习惯。而JDOM作为一种轻量级API被制定,它最核心的要求是以Java为中心,只适合于Java语言,它遵循DOM的接口主要规则,除去了DOM中为了兼容各语言而与Java习惯的不同。

      
      二、使用JDOM的前提条件
        须要有SAX、DOM解析器的类文件,JDOM只是一种适合Java程序员来使用的Java XML解析器,目前流行的Java XML解析器还有:Apache Xerces Java、JAXP。

       Xerces Java解析器是完全用Java编写的XML解析器,最新版本是2.5,它支持以下标准和API:

    (1) XML1.0规范(第二版本)

    (2) XML命名空间规范

    (3) DOM2核心标准规范

    (4) SAX2核心扩展

    (5) JAXP1.2 :是Sun提供的使用Java处理XML的接口API。

    (6) XML Schema结构和数据类型标准
      
       
       
       

       
      
           还有最好的是它开放源代码,我们可以在http://xml.apache.org/dist/xerces-j/ 处去下载。下载文件Xerces-J-bin.2.5.0.zip。
    解压下载文件,得到四个压缩包加到项目的路径中(其实不要全加,但不熟的情况下考虑这么做)。
    JDOM的二进制版本下载:http://www.jdom.org/downloads/index.html
    把解压后的jdom.jar文件加到项目的类路径中,另外便于调试,还要下载它的源代码。 三、使用JDOM解析XML
          好了,现在该是正题了。下面通过一个简单的例子说明一下怎么用JDOM这一适合Java程序员习惯的工具包来解析XML文档。
    为了简单,我用了如下XML作为要解析的XML文件:
    <?xml version="1.0" encoding="gb2312"?>
    <books>
        <book email="zhoujunhui">
          <name>rjzjh</name>
          <price>60.0</price>
       </book>
    </books>
    够简单的吧,但它对于我们关心的东西都有了,子节点,属性。
    下面是用于解析这个XML文件的Java文件:
    1. 1 public class JDomParse {
    2. 2        public JDomParse(){
    3. 3                String xmlpath="library.xml";
    4. 4                SAXBuilder builder=new SAXBuilder(false);
    5. 5                try {
    6. 6                        Document doc=builder.build(xmlpath);
    7. 7                        Element books=doc.getRootElement();
    8. 8                        List booklist=books.getChildren("book");
    9. 9                        for (Iterator iter = booklist.iterator(); iter.hasNext();) {
    10. 10                                Element book = (Element) iter.next();
    11. 11                                String email=book.getAttributeValue("email");
    12. 12                                System.out.println(email);
    13. 13                                String name=book.getChildTextTrim("name");
    14. 14                                System.out.println(name);
    15. 15                                book.getChild("name").setText("alterrjzjh");
    16. 16                               
    17. 17                        }
    18. 18                       
    19. 19                        XMLOutputter outputter=new XMLOutputter();
    20. 20                        outputter.output(doc,new FileOutputStream(xmlpath));
    21. 21                       
    22. 22                } catch (JDOMException e) {
    23. 23                        e.printStackTrace();
    24. 24                } catch (IOException e) {
    25. 25                        e.printStackTrace();
    26. 26                }
    27. 27        }
    28. 28        public static void main(String[] args) {
    29. 29                new JDomParse();
    30. 30        }
    31. 31}
    复制代码
    不到30行代码,现在我对代码解释一下:
    四、解释代码
    引用的类:
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.List;
    //下面是引用到JDOM中的类
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.JDOMException;
    import org.jdom.input.SAXBuilder;
    import org.jdom.output.XMLOutputter;
    (1)使用JDOM首先要指定使用什么解析器。如:
             SAXBuilder builder=new SAXBuilder(false); 这表示使用的是默认的解析器
    (2)得到Document,我们以后要进行的所有操作都是对这个Document操作的:
             Document doc=builder.build(xmlpath);
    (3)得到根元素:
             Element books=doc.getRootElement();
    在JDOM中所有的节点(DOM中的概念)都是一个org.jdom.Element类,当然他的子节点也是一个org.jdom.Element类。
    (4)得到元素(节点)的集合:
           List booklist=books.getChildren("book");
    这表示得到“books”元素的所在名称为“book”的元素,并把这些元素都放到一个List集合中
    (5)轮循List集合
          for (Iterator iter = booklist.iterator(); iter.hasNext();) {
            Element book = (Element) iter.next();
         }
    还有一种轮循方法是:
         for(int i=0;I<booklist.size();I++){
           Element book=(Element)booklist.get(i);
         }
    (6)取得元素的属性:
         String email=book.getAttributeValue("email");
        取得元素book的属性名为“email”的属性值。
    (7)取得元素的子元素(为最低层元素)的值:
         String name=book.getChildTextTrim("name");
         注意的是,必须确定book元素的名为“name”的子元素只有一个。
    (8)改变元素(为最低层元素)的值:
         book.getChild("name").setText("alterrjzjh");
         这只是对Document的修改,并没有在实际的XML文档中进行修改
    (9)保存Document的修改到XML文件中:
        XMLOutputter outputter=new XMLOutputter();
         outputter.output(doc,new FileOutputStream(xmlpath));

    我们先要有一个XMLOutputter类,再把已经修改了的Document保存进XML文档中。
    到此。用JDOM解析和处理XML文档讲解完了,麻雀虽小,五脏俱全。现在已对JDOM有个整体上的概念了吧。



      
      
       
       

         
       

         
       
      



    源码下载:http://file.javaxxz.com/2014/10/9/235137796.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-26 18:15 , Processed in 0.329167 second(s), 36 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表