JDOM解析XML案例Demo(三)
2018-04-03 17:44
92 查看
一、简介
Jdom是一个开源项目,基于树形结构,利用纯java的技术对XML文档实现解析,生成,序列化以及多种操作。它是直接为java编程服务,利用java语言的特性(方法重载,集合),把SAX和DOM的功能结合起来,尽可能的把原来解析xml变得简单,我们使用Jdom解析xml会是一件轻松的事情。
Jdom的优点:
- Jdom专用于java技术,比Dom应用占用更少内存。
- Jdom提供更加简单和逻辑性访问xml信息的基础方法
- 除xml文件外,Jdom还可以访问其他的数据源,例如可以创建类从SQL查询结果中访问数据
Jdom由6个包构成:
Element类表示XML文档的元素
- org.jdom: 解析xml文件所要用到的基础类
- org.jdom.adapters: 包含DOM适配的Java类
- org.jdom.filter: 包含xml文档的过滤类
- org.jdom.input: 包含读取XML文档的Java类
- org.jdom.output: 包含输出XML文档的类
- org.jdom.trans form: 包含将Jdom xml文档接口转换为其他XML文档接口的Java类
二、xml文件
<?xml version = "1.0" encoding = "utf-8"?> <books> <book id="1"> <name>冰与火之歌</name> <author>张三</author> <pice>99</pice> </book> <book id="2"> <name>葫芦娃</name> <pice>99</pice> <year>1993</year> </book> </books>
三、JDOM案例
因为jdom是第三方提供的xml解析模式,所以需要将Jdom中的包导入进来。
package com.da.xml; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.List; import org.jdom2.Attribute; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.input.SAXBuilder; public class JDOMTest { public static void main(String[] args) { //创建SAXBuilder实例 SAXBuilder saxBuilder = new SAXBuilder(); InputStream io = null; try { //创建一个输入流,将xml文件加载到输入流中 FileInputStream in = new FileInputStream("books.xml"); //通过saxBuilder中的build方法,将输入流加载到saxBuilder Document build = saxBuilder.build(in); //通过Document对象获取xml文件的根节点 Element rootElement = build.getRootElement(); //获取根节点下的子节点的List集合 List<Element> booklist = rootElement.getChildren(); for (Element book : booklist) { System.out.println("解析第"+(booklist.indexOf(book)+1)+"本书"); //不知道属性名的情况下进行遍历 List<Attribute> attributes = book.getAttributes(); for (Attribute attr : attributes) { System.out.println("属性名:"+attr.getName()+":"+attr.getValue()); } //知道属性名下参数的个数直接进行获取。 // String attributeValue = book.getAttributeValue("id"); // System.out.println(attributeValue); //遍历book子节点的节点名与节点值 List<Element> children = book.getChildren(); for (Element element : children) { System.out.println("节点:"+element.getName()+":"+element.getValue()); } } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JDOMException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
结果
解析第1本书
属性名:id:1
节点:name:冰与火之歌
节点:author:张三
节点:pice:99
解析第2本书
属性名:id:2
节点:name:葫芦娃
节点:pice:99
节点:year:1993
四、扩展
使用 JDOM 解析将 XML 的内容和结构存入 JAVA 对象
给xml进行转码InputStreamReader str= new InputStreamReader(io, "utf-8");
相关文章推荐
- DOM4J解析XML案例Demo(四)
- JAVA如何使用Dom4j解析xml的DEMO案例
- Jdom方式创建/解析xml
- 关于DOM4J 解析和生成XML小Demo
- jdom 2.解析xml
- javaweb-day01-7(XML 解析-案例)
- Jdom解析XML
- 用JDOM解析xml文件
- JDOM解析XML
- JAVA对XML的几种解析方法讲解(JDOM)
- 使用jdom解析XML文件之saxbuilder用法
- Java解析XML的四种方法--JDOM
- XML解析JDom和JDOM(SAX方式)
- 160928、JQuery解析XML数据的demo
- XML解析与创建之——JDOM
- Jdom操作、创建和解析XML
- DOM,SAX,JDOM,DOM4J优缺点比较及生产xml和解析xml
- XML——DOM解析案例
- java之jdom解析xml(二)
- DOM、SAX、JDOM、JAXB 对XML 文档的解析