用javabean封装xml文档数据

//book.xml

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
	<book id="1">
		<name>冰与火之歌</name>
		<author>乔治马丁</author>
		<year>2014</year>
		<price>89</price>
		<language>English</language>
	</book>

	<book id="2">
		<name>安徒生童话</name>
		<year>2004</year>
		<price>77</price>
		<language>English</language>
	</book>
</bookstore>

//Books.java

package com.huowolf.handler;

public class Books {
	private String name;
	private String author;
	private int year;
	private double price;

	public void setName(String name) {
		this.name = name;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public void setYear(int year) {
		this.year = year;
	}
	public void setPrice(double price) {
		this.price = price;
	}

	public String getName() {
		return name;
	}
	public String getAuthor() {
		return author;
	}
	public int getYear() {
		return year;
	}
	public double getPrice() {
		return price;
	}

}

//Demo.java

package com.huowolf.handler;

/*
 * 用javabean封装xml文档数据
 */
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

public class Demo3 {

	public static void main(String[] args) throws Exception {
		//获取一个解析工厂
		SAXParserFactory factory = SAXParserFactory.newInstance();

		//通过factory获取解析器
		SAXParser parser = factory.newSAXParser();

		//得到读取器
		XMLReader reader = parser.getXMLReader();

		//设置内容处理器
		BeanListHandler handler = new BeanListHandler();
		reader.setContentHandler(handler);

		//读取xml文档内容
		reader.parse("books.xml");

		List<Books> list = handler.getBooks();
		System.out.println(list);

		System.out.println(list.get(0).getAuthor());

	}
}

//把xml文档中的每一本书封装到一个book对象,并把多个book对象放在一个list集合中返回

class BeanListHandler extends DefaultHandler {
	private List<Books> list= new ArrayList<Books>();
	private String currentTag;
	private Books  book;

	@Override
	public void startDocument() throws SAXException {
			System.out.println("开始解析");
	}

	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		currentTag = qName;
		if(currentTag.equals("book")) {
			book = new Books();
		}
	}

	@Override
		public void characters(char[] ch, int start, int length)
				throws SAXException {

			if("name".equals(currentTag)) {
				String name = new String(ch, start, length);
				book.setName(name);
			}

			if("author".equals(currentTag)) {
				String author = new String(ch, start, length);
				book.setAuthor(author);
			}

			if("year".equals(currentTag)) {
				int year = Integer.parseInt(new String(ch, start, length));
				book.setYear(year);
			}

			if("price".equals(currentTag)) {
				double price = Double.parseDouble(new String(ch, start, length));
				book.setPrice(price);
			}
		}

	@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
			//System.out.println(qName);
			if(qName.equals("book")) {
				list.add(book);
				book = null;
			}
			currentTag = null;
	}

	//返回list集合
	public List<Books> getBooks() {
		return list;
	}

}

//学习自方立勋老师视频教程

时间: 2024-07-29 12:44:14

用javabean封装xml文档数据的相关文章

对xml文档数据的读取

在短暂的C#程序开发过程中,我发现使用xml文档来存储一些数据还是很不错的!当然有了数据当然要读取,在开发过程我遇到了两种对xml文档数据进行读取的方法. 就是最基本的利用System.Xml命名空间,通过各个节点来获得xml中的数据. 例如下面的Xml数据: <?xml version="1.0"?> <BookStore> <book> <title>C#入门经典</title> <author>Karli W

Java对XML文档的解析

1. DOM解析 DOM的全称是Document Object Model,也即文档对象模型.DOM解析会将XML文档以对象树的方式存入内存,因此,DOM解析内存消耗巨大.当然由于DOM解析将XML以节点树的方式调入内存,所以对文档进行增删改查(crud)比较方便.DOM分析器把整个XML文档转化成DOM树放在了内存中,因此,当文档比较大或者结构比较复杂时,对内存的需求就比较高.而且,对于结构复杂的树的遍历也是一项耗时的操作.所以,DOM分析器对机器性能的要求比较高,实现效率不十分理想. ---

文档对象模型操作xml文档

简介 :文档对象模型(DOM)是一种用于处理xml文档的API函数集. 2.1文档对象模型概述 按照W3C的定义,DOM是“一种允许程序或脚本动态地访问更新文档内容,结构和样式的.独立于平台和语言的规范化接口.DOM是表示文档(比如HTML和XML)和访问.操作构成文档的各种元素的应用程序接口,它以树状结构表示HTML和XML文档,定义了遍历这个树和检查.修改树的节点的方法和属性. DOM的核心API还允许你创建和填充文件.加载文档并保存. 2.2DOM实现 微软的net框架在Systemx.x

java操作xml文档

目前最常用的XML解析技术是DOM和SAX. DOM是基于XML的树结构来完成解析的,适用于多次访问的XML文档,但是DOM解析比较消耗资源:而SAX是基于事件解析,适用于大数据量的XML文档,占用资源少,内存消耗小. DOM是文档对象模型(Document Object Model) 首先DOM会将XML文档映射成一颗倒挂的树,在这棵树中,每个节点都是以节点对象的形式存在的. 我们通过操作这些对象就可以完成XML文件的读写任务了. 我们可以直接根据节点的名称或属性查找该节点对象,也可以根据一个

XML文档类型定义---DTD文档

DTD的作用 XML文档是一种元标记语言,即一种定义标记语言的语言.在XML中可以创建新的标记语言,这些新的标记语言(也叫标记集)要通过文档类型定义(Document Type Definitions,DTD)来定义.DTD文档是这些新的标记语言的法律性文档.如果XML文档的语法符,DTD的定义和规定,那么就称为一个合法的XML文档,否则就是非法的XML文档.合法的XML文档在实际应用中的地位很重要,因为只有合法的XML文档才能被应用软件有效地处理. DTD定义了文档的逻辑结构,规定了文档中所使

java将XML文档转换成json格式数据

功能 将xml文档转换成json格式数据 说明 依赖包: 1. jdom-2.0.2.jar : xml解析工具包; 2. fastjson-1.1.36.jar : 阿里巴巴研发的高性能json工具包 程序源码 package com.xxx.open.pay.util; import com.alibaba.fastjson.JSONObject; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdo

XML 文档和数据

.NET Framework 4.5 其他版本 .NET Framework 提供了一组全面而集成的类,可用来方便地生成可以识别 XML 的应用程序. 通过以下命名空间中的类,可以分析和编写 XML,编辑内存中的 XML 数据,进行数据验证以及 XSLT 转换. System.Xml System.Xml.XPath System.Xml.Xsl System.Xml.Schema System.Xml.Linq 有关完整列表,请参阅 System.Xml 命名空间网页. 这些命名空间中的类支持

从多个XML文档中读取数据用于显示webapi帮助文档

前言: 你先得知道HelpPageConfig文件,不知道说明你现在不需要这个,所以下文就不用看了,等知道了再看也不急.当然如果你很知道这个,下文也不用看了,因为你会了. 方法一: new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/Documentation.xml")) 替换成 new XmlDocumentationProvider("PluginsFolder/*.xm

把XML文档中的每一本书封装到一个book对象,并把多个book对象放到一个list集合当中返回

1 package sax; 2 3 import java.awt.print.Book; 4 import java.io.IOException; 5 import java.util.ArrayList; 6 import java.util.List; 7 8 import javax.xml.parsers.ParserConfigurationException; 9 import javax.xml.parsers.SAXParser; 10 import javax.xml.p