温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

XML解析中如何使用sax解析把xml文档封装成对象

发布时间:2021-03-12 11:37:53 来源:亿速云 阅读:222 作者:小新 栏目:编程语言

小编给大家分享一下XML解析中如何使用sax解析把xml文档封装成对象,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

Demo1类:

import java.io.File; import java.util.List; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; /**  * 使用sax解析把 xml文档封装成对象  * @author APPle  *  */ public class Demo3 {	public static void main(String[] args)throws Exception {	SAXParser parser = SAXParserFactory.newInstance().newSAXParser();	MyDefaultHandler3 handler = new MyDefaultHandler3();	parser.parse(new File("./src/contact.xml"), handler);	List<Contact> list = handler.getList();	for (Contact contact : list) {	System.out.println(contact);	}	} }

MyDefaultHandler3类:

import java.util.ArrayList; import java.util.List; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; /**  * SAX处理程序  * @author APPle  *  */ public class MyDefaultHandler3 extends DefaultHandler {	//存储所有联系人对象	private List<Contact> list = new ArrayList<Contact>();	public List<Contact> getList(){	return list;	}	//保存一个联系人信息	private Contact contact;	/**	 * 思路: 	 * 	1)创建Contact对象	 *  2)把每个contact标签内容存入到Contact对象	 *  3)把Contact对象放入List中	 */	//用于临时存储当前读到的标签名	private String curTag;//用于方法跨度使用变量。	@Override	public void startElement(String uri, String localName, String qName,	Attributes attributes) throws SAXException {	curTag = qName;	//读取到contact的开始标签创建Contact对象,这里说明了什么时候创建Content对象最合适。	if("contact".equals(qName)){	contact = new Contact();	//设置id值	contact.setId(attributes.getValue("id"));//根据指定名字获取id值	}	}	@Override	public void characters(char[] ch, int start, int length)	throws SAXException {	//当前文本内容	String content = new String(ch,start,length);//String类构造方法获取到当前文本的额内容。	if("name".equals(curTag)){	contact.setName(content);	}	if("age".equals(curTag)){	contact.setAge(content);	}	if("phone".equals(curTag)){	contact.setPhone(content);	}	if("email".equals(curTag)){	contact.setEmail(content);	}	if("qq".equals(curTag)){	contact.setQq(content);	}	}	@Override	public void endElement(String uri, String localName, String qName)	throws SAXException {	//结束标签后就设置null。这里设置为null很重要。设置空是为了避免空格换行设置到对象的属性中,空格换行进去了就把原来放进去的数据覆盖掉。	curTag = null;	//读到Contact的结束标签把content对象放入List中	if("contact".equals(qName)){	list.add(contact);	}	} }

以上是“XML解析中如何使用sax解析把xml文档封装成对象”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI