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

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

Demo1类:

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

importjava.io.File;
importjava.util.List;

importjavax.xml.parsers.SAXParser;
importjavax.xml.parsers.SAXParserFactory;

/**
*使用sax解析把xml文档封装成对象
*@authorAPPle
*
*/
publicclassDemo3{

	publicstaticvoidmain(String[]args)throwsException{
		SAXParserparser=SAXParserFactory.newInstance().newSAXParser();
		MyDefaultHandler3handler=newMyDefaultHandler3();
		parser.parse(newFile("./src/contact.xml"),handler);
		List<Contact>list=handler.getList();
		for(Contactcontact:list){
			System.out.println(contact);
		}
	}
}

MyDefaultHandler3类:

importjava.util.ArrayList;
importjava.util.List;

importorg.xml.sax.Attributes;
importorg.xml.sax.SAXException;
importorg.xml.sax.helpers.DefaultHandler;
/**
*SAX处理程序
*@authorAPPle
*
*/
publicclassMyDefaultHandler3extendsDefaultHandler{
	//存储所有联系人对象
	privateList<Contact>list=newArrayList<Contact>();
	
	publicList<Contact>getList(){
		returnlist;
	}
	//保存一个联系人信息
	privateContactcontact;
	/**
	*思路:
	*	1)创建Contact对象
	*2)把每个contact标签内容存入到Contact对象
	*3)把Contact对象放入List中
	*/
	//用于临时存储当前读到的标签名
	privateStringcurTag;//用于方法跨度使用变量。

	@Override
	publicvoidstartElement(Stringuri,StringlocalName,StringqName,
			Attributesattributes)throwsSAXException{
		curTag=qName;
		//读取到contact的开始标签创建Contact对象,这里说明了什么时候创建Content对象最合适。
		if("contact".equals(qName)){
			contact=newContact();
			
			//设置id值
			contact.setId(attributes.getValue("id"));//根据指定名字获取id值
		}
	}
	
	@Override
	publicvoidcharacters(char[]ch,intstart,intlength)
			throwsSAXException{
		//当前文本内容
		Stringcontent=newString(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
	publicvoidendElement(Stringuri,StringlocalName,StringqName)
			throwsSAXException{
		//结束标签后就设置null。这里设置为null很重要。设置空是为了避免空格换行设置到对象的属性中,空格换行进去了就把原来放进去的数据覆盖掉。
		curTag=null;
		//读到Contact的结束标签把content对象放入List中
		if("contact".equals(qName)){
			list.add(contact);
		}
	}
}

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

发布于 2021-03-13 15:40:33
收藏
分享
海报
0 条评论
173
上一篇:怎么使用XML Schema定义元素 下一篇:如何使用XSL和ASP在线编辑XML文档
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码