您的位置:首页 > 其它

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");

    

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JDOM XML xml转码