xml文件解析之pull解析

xml文件解析:

xml文件:

<pre name="code" class="html"><span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<books>
    <book>
       <id>100</id>
       <name>android学习</name>
       <price>20</price>
    </book>
    
    <book>
        <id>101</id>
        <name>好好学习,天天向上</name>
        <price>12.2</price>
    </book>
</books></span>

 

<span style="font-size:14px;">//将xml文件转换为数据
	public void xmlParseTest() throws IOException, XmlPullParserException{
		XmlPullParser pullParser = Xml.newPullParser();            //获取XmlPullParser对象
		InputStream is = getContext().getAssets().open("parse.xml");   //解析文本
		ArrayList<Books> books = null ;
		Books book = null;                //通过对象Books获取数据
		pullParser.setInput(is, "UTF-8");
		int type = pullParser.getEventType();    //获取事件类型
		while (type != pullParser.END_DOCUMENT) {   //结束文本</books>
			switch(type){
			case XmlPullParser.START_DOCUMENT:    //开始文本<books>
				books = new ArrayList<Books>();
				break;
			case XmlPullParser.START_TAG:    //开始标记   <book>
				if (pullParser.getName().equals("book")) {
					book = new Books();
				}else if (pullParser.getName().equals("id")) {
					type = pullParser.next();    //指向下一个位置,不然无法获取数据
					book.setId(Integer.parseInt(pullParser.getText()));
				}else if (pullParser.getName().equals("name")) {
					type = pullParser.next();      
					book.setName(pullParser.getText());
				}else if (pullParser.getName().equals("price")) {
					type = pullParser.next();
					book.setPrice(Double.valueOf(pullParser.getText()));
				}
				
				break;
			case XmlPullParser.END_TAG:   //结束标记      </books>
				if (pullParser.getName().equals("book")) {
					books.add(book);
					book = null;    //置为空释放资源
				}
				break;
			}
			type = pullParser.next();    //指向下一个标记
			
		}
		for (Books books2 : books) {
			Logs.d("books-----id"+books2.getId()+",name--"+books2.getName());
		}
		
	}</span>
生成xml文件:

<span style="font-size:14px;">//将数据转换为xml字符串
	public void serialize() throws IllegalArgumentException, IllegalStateException, IOException{
		XmlSerializer serializer = Xml.newSerializer();
		ArrayList<Books> bookList = new ArrayList<Books>();
		Books books = new Books();
		books.setId(12);
		books.setName("android解析xml学习1");
		books.setPrice(23.3);
		bookList.add(books);
		
		books = new Books();
		books.setId(13);
		books.setName("android解析xml学习2");
		books.setPrice(24.3);
		bookList.add(books);
		
		books = new Books();
		books.setId(14);
		books.setName("android解析xml学习3");
		books.setPrice(25.3);
		bookList.add(books);
		
		StringWriter os = new StringWriter();
		
		serializer.setOutput(os);
		serializer.startDocument("UTF-8", true);
		serializer.startTag("", "books");
		
		for (Books books2 : bookList) {         //遍历数据
			serializer.startTag("", "book");
			
			serializer.startTag("", "id");
			serializer.text(books2.getId()+"");
			serializer.endTag("", "id");
			
			serializer.startTag("", "name");
			serializer.text(books2.getName());
			serializer.endTag("", "name");
			
			serializer.startTag("", "price");
			serializer.text(books2.getPrice()+"");
			serializer.endTag("", "price");
			
			serializer.endTag("", "book");
		}
		serializer.endTag("", "books");
		serializer.endDocument();
		
		Logs.d(""+os.toString());          //此时打印数据与上方xml相同
	}</span>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值