XML:三大解析之pull解析

本文深入探讨了Pull解析器在XML解析中的应用,对比SAX解析器,Pull解析器提供了更灵活的指针控制,允许开发者精确地定位到XML文档中的特定标签或文本。通过实例代码,展示了如何使用Pull解析器还原XML文件的原始样式,适用于需要精细控制解析过程的场景。

xml解析方式有dom,sax,以及pull。相较而言,sax与pull极为相似,dom则大不一样。
**sax与pull最大的区别在于(假如有一个类似指针的东西) pull可以人为的去控制这个指针指向哪个标签,那个文本。而sax不同。强制从开头指到结尾。**pull的这种方式由于 PullParse.next()来实现。同时指向不同类型的标签或者Text文本,返回的eventtype也不同。
一下代码通过解析Xml 还原xml文件的样式。

Xml文件:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<书架>
	<书>
		<书名>Java就业培训教程</书名>
		<作者>张孝祥</作者>
		<售价>39.00元</售价>
	</书>
	<书>
		<书名>JavaScript网页开发</书名>
		<作者>张孝祥</作者>
		<售价>199.00元</售价>
	</书>
</书架>

效果图:

书架
	书
		书名Java就业培训教程书名
		作者张孝祥作者
		售价39.00元售价
	书
	书
		书名JavaScript网页开发书名
		作者张孝祥作者
		售价199.00元售价
	书
书架
public class PullParserText {

	@Test
	public void pullText() throws Exception {

		// 获取解析器工厂
		XmlPullParserFactory pullParserFactory = XmlPullParserFactory.newInstance();
		// 获取解析器
		XmlPullParser pullParser = pullParserFactory.newPullParser();
		// 给解析器设置一个输入源
		// 第一个参数是文件IO流 第二个参数是编码集
		pullParser.setInput(new FileInputStream(new File("book.xml")), "utf-8");

		// 获取当前的事件类型
		// 文档的起始与末尾无法打印
		// XmlPullParser.START_DOCUMENT 读取文档首 0
		// XmlPullParser.END_DOCUMENT 	读取文档尾 1

		// 文档内容使用 getText();
		// XmlPullParser.TEXT 读取文本内容 4

		// 标签使用getName();
		// XmlPullParser.START_TAG 读取首标签 2
		// XmlPullParser.END_TAG 读取尾标签 3

		int eventType = pullParser.getEventType();
		
		
		while(eventType!=XmlPullParser.END_DOCUMENT) {
			
			if (eventType == 4)
				System.out.print(pullParser.getText());
			else if(eventType == 2 || eventType == 3 )
				System.out.println(pullParser.getName());
			
			eventType = pullParser.next();
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值