接上一篇,本文介绍使用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文档(三)的更多相关文章

  1. 浅谈用java解析xml文档(四)

    继续接上一文,这一阵子因为公司项目加紧,导致最后一个解析xml文档的方式,还没有总结,下面总结使用dom4J解析xml. DOM4J(Document Object Model for Java) 使 ...

  2. 浅谈用java解析xml文档(二)

    上一文中总结了dom解析xml文档的方式,本文开始总结使用SAX解析xml 的方式及它的优缺点! SAX(Simple API for XML),是指一种接口,或者一个软件包. 首先我们应该知道SAX ...

  3. 浅谈用java解析xml文档(一)

    关于xml本身的语法及使用的环境不多说了,网上有很多规则, 然对xml文档进行解析,一般分为四种解析方式,基于java官方文档的Dom 和Sax解析,还有就是基于 第三方jar包的 Jdom 和 Do ...

  4. java 解析XML文档

    Java 解析XML文档 一.解析XML文档方式: 1.DOM方式:将整个XML文档读取到内存中,按照XML文件的树状结构图进行解析. 2.SAX方式:基于事件的解析,只需要加载XML中的部分数据,优 ...

  5. Java解析XML文档(简单实例)——dom解析xml

      一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object ...

  6. Java解析XML文档——dom解析xml

    一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object M ...

  7. java解析xml文档(dom)

    DOM解析XML文档 读取本地的xml文件,通过DOM进行解析,DOM解析的特点就是把整个xml文件装载入内存中,形成一颗DOM树形结构,树结构是方便遍历和和操纵. DOM解析的特性就是读取xml文件 ...

  8. JAVA读取XML,JAVA读取XML文档,JAVA解析XML文档,JAVA与XML,XML文档解析(Document Object Model, DOM)

    使用Document Object Model, DOM解析XML文档 也可参考我的新浪博客:http://blog.sina.com.cn/s/blog_43ac5543010190w3.html ...

  9. java 解析xml文档---通过XmlPullParser解析方式

    package com.zx; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayLi ...

随机推荐

  1. NOIP2004 津津的储蓄计划

    一.津津的储蓄计划 (Save.pas/dpr/c/cpp). [问题描述] 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同. ...

  2. MFC定时器

    比较简单,在程序中可以找到原型. 在程序中我们经常要使用定时刷新的功能,典型的应用是在信息管理系统中表单要跟着数据库中的数据变动.MFC提供了定时器来完成这个功能. ================= ...

  3. Code First 更新数据库结构(简单实现方法:会删除原来的数据)

    之前在 http://www.cnblogs.com/mmcmmc/p/3833265.html 写到关于“Code First 更新数据库结构”的东西. 可是由于某种原因,新手们会出现各种问题,好了 ...

  4. Zend studio注册码

    Zend studio 7.1 注册码 username:lisijie_orgLicense Key:3F4F495657BF3F4A95657BF3 Zend studio 8 注册码(适用于7. ...

  5. Android--应用开发2(AndroidManfest.xml)

    AndroidManfest.xml 文件分析 manifest 根节点,描述package中所有内容 xmlns:android 包含命名空间声明.xmlns:android="http: ...

  6. [解决]ASP.NET MVC 4/5 源码调试(source code debug)

    ========================ASP.NET MVC 4============================ ASP.NET MVC 4 source code download ...

  7. Java 远程通讯技术及原理分析

    在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI.MINA.ESB.Burlap.Hessian.SOAP.EJB和JMS等,这些 ...

  8. Android实例-监测网络状态及一些事件(XE8+小米2)

    结果: 1.网络连接:是指现在可不可以上网(你非要问我什么是网,我会K你呀的). 2.WIFI网络:是指现在可以上网,用的是不是WIFI网络(如果你打开了WIFI那它会显示正在使用WIFI). 3.移 ...

  9. UVa 二分图匹配 Examples

    这些都是刘汝佳的算法训练指南上的例题,基本包括了常见的几种二分图匹配的算法. 二分图是这样一个图,顶点分成两个不相交的集合X , Y中,其中同一个集合中没有边,所有的边关联在两个集合中. 给定一个二分 ...

  10. bzoj3261 可持久化trie

    容易想到题解. 总结一下区间异或和题: 1.转化成trie 2.注意空间稍微开大 3.不要一个数右移31位 4.考虑开头要不要插一个零 5.注意可持久get的时候区间是左开右闭,但这样会变成x-2,x ...