java 解析xml6_Java_解析XML文件

本文介绍DOM4J,一种用于解析XML文件的Java库。文章详细解释了DOM4J的基本用法,包括如何获取XML元素及其属性和内容,并通过一个具体示例展示了如何读取XML文件并将其转换为Java对象。

XML是可扩展标记语言的简称,作为一种通用的数据交换格式,它的平台无关性、语言无关性、系统无关性 给数据集成与交互带来了极大的方便。XML在不同语言中的解析方式都是一样的,只不过实现的语言不同而已。

在Java中,XML的解析方式有四种,分别是:DOM解析;SAX解析;JDOM解析;DOM4J解析。前两种属于官方自带的解析方式,与平台无关;后两者是扩展方法,只适用于Java平台。

OK,这篇,我们只研究使用最广泛的DOM4J。

1、简介:

关于dom4j,首先我们要知道,它不是属于Java自带的解析XML方式,也就是说,要想使用dom4j,首先你需要先添加dom4j jar包。

OK,添加完jar包之后,我们就可以研究下它的语法了。

2、语法:

1)、获取根元素:

Element e1 = document.getRootElement();

2)、获取某个元素下面的子元素:

Element e2 = root.element("xxx");

3)、获取元素的子元素集合1 (所有子元素)

List e_list = e2.elements();

4)、获取元素的子元素集合2(指定名称的子元素集合)

List e_list = e2.elements("user");

5)、获取元素属性的值

elements.attributeValue("name");

6)、获取元素的内容

element.getText();

。。。

3、一个栗子:

Java

aaa

2014

89

Linux

bbb

2015

77

Spring

ccc

2016

100

public class Book {

private int id;

private String name;

private String author;

private int year;

private double price;

//setter,getter ...

@Override

public String toString() {

return "Book [id=" + id + ", name=" + name + ", author=" + author

+ ", year=" + year + ", price=" + price + "]";

}

}

public class Test09 {

private List bookList = null;

private Book book = null;

private List getBooks(File file) {

SAXReader reader = new SAXReader();

try {

Document document = reader.read(file);

Element bookstore = document.getRootElement();

Iterator stores = bookstore.elementIterator();

bookList = new ArrayList();

while(stores.hasNext()){

book = new Book();

Element bookElement = (Element) stores.next();

List attributes = bookElement.attributes();

for(Attribute attribute : attributes){

if(attribute.getName().equals("id")){

String id = attribute.getValue();

book.setId(Integer.parseInt(id));

}

}

Iterator bookit = bookElement.elementIterator();

while(bookit.hasNext()){

Element child = (Element) bookit.next();

String nodeName = child.getName();

if(nodeName.equals("name")){

String name = child.getStringValue();

book.setName(name);

}else if(nodeName.equals("author")){

String author = child.getStringValue();

book.setAuthor(author);

}else if(nodeName.equals("year")){

String year = child.getStringValue();

book.setYear(Integer.parseInt(year));

}else if(nodeName.equals("price")){

String price = child.getStringValue();

book.setName(price);

}

}

bookList.add(book);

book = null;

}

} catch (DocumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return bookList;

}

public static void main(String[] args) {

File file = new File("src/java_19/book.xml");

List bookList = new Test09().getBooks(file);

for(Book book:bookList){

System.out.println(book);

}

}

}

控制台输出:

Book [id=1, name=89, author=aaa, year=2014, price=0.0]

Book [id=2, name=77, author=bbb, year=2015, price=0.0]

Book [id=3, name=100, author=ccc, year=2016, price=0.0]

OK,先这样,饿了 准备下班...

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值