jdom解析xml

Java特定的文档对象模型。自身不包含解析器,使用SAX。

优点:
1、使用具体类而不是接口,简化了DOM的API。
2、大量使用了Java集合类,方便了Java开发人员。

缺点:
1、没有较好的灵活性。

2、性能较差。

导入相关jar  jdom-2.0.5-contrib.jar
jdom-2.0.5-javadoc.jar
jdom-2.0.5-junit.jar

jdom-2.0.5.jar

一创建项目

1.创建类book

package com.jdomxml;

public class Book {

	private String id;
	private String name;
	private String author;
	private String price;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public String getPrice() {
		return price;
	}
	public void setPrice(String price) {
		this.price = price;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}

2.开始解析xml,并把解析的xml文件的节点保存到book对象

package com.jdomxml;

import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;

public class JdomXmlTest {
	
	private static ArrayList<Book> bookList = new ArrayList<>();
	
	public static void main(String[] args) {
		
		//进行对book.xml文件进行JDOM解析
		//1.创建一个SAXBuilder的对象
		SAXBuilder saxBuilder = new SAXBuilder();
		try {
			//2.创建一个输入流,将xml文件加载到输入流中
			InputStream in = new FileInputStream("book.xml");
			//3.通过saxBuilder的builder方法将book.xml加载到SAXBuilder
			Document document = saxBuilder.build(in);
			//4.通过document对象获取xml的根节点
			Element rootElement = document.getRootElement();
			//5.获取根节点下的子节点的list集合
			List<Element> rootList = rootElement.getChildren();
			//继续进行解析
			for (Element element : rootList) {
//				Attribute id = element.getAttribute("id");
//				System.out.println(id.getName()+"========"+id.getValue());  
				
				Book bookEntity = new Book();
				//解析book的属性
				List<Attribute> attrList = element.getAttributes();
				//遍历Attribute(主要针对于在不知道book节点的属性名与属性值)
				for (Attribute attribute : attrList) {
					//获取属性名
					String name = attribute.getName();
					System.out.print("people属性名:"+name+"\t");
					//获取属性值
					String value = attribute.getValue();
					System.out.println("属性值:"+value);
					
					if (name.equals("id")) {
						bookEntity.setId(value);
					}
					
				}
				//对book节点下的子节点下的节点名与节点值进行遍历
				List<Element> children = element.getChildren();
				for (Element child : children) {
					//子节点的节点名与节点值
					System.out.println("属性名:"+child.getName()+"\t"+"属性值:"+child.getValue());
					
					if (child.getName().equals("name")) {
						bookEntity.setName(child.getValue());
					} else if (child.getName().equals("author")) {
						bookEntity.setAuthor(child.getValue());
					}else if (child.getName().equals("price")) {
						bookEntity.setPrice(child.getValue());
					}
					
				}
				bookList.add(bookEntity);
				System.out.println(bookList.size());
			}
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

Jdom常用方法:

1:SAXBuilder.build(FileInputStream("*.xml");获取xml文件,返回Document实例(读xml文件)
2:Element.getChildren();获取该节点的所有字节点,返回List
3:Element.getChild("child节点名");获取字节点实例
4:Element.getAttribute("属性名");获取该节点属性的value值(平面式节点)
5:Element.getText();获取该节点的节点文本
6:Document(new Element("根节点名"));新建xml文件文档
7:Document.getRootNote();获取根节点
8:Element.addContent(Element);添加子节点
9:Element.setAttribute("属性名","属性值");添加节点属性
10:Element.setText("文本值");添加该节点的文本值

11:xmloutPutter(Format.getPrettyFormat());设置XML文档输出的格式
12:xmlOutPutter.output(Document,FileOutPutStream);这两句用来输出xml文件,其中Document为填好内容的xml文档对象,FileoutPutStream为文本输出流


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值