加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml文件解析之pull解析

发布时间:2020-12-16 00:10:04 所属栏目:百科 来源:网络整理
导读:xml文件解析: xml文件: pre name="code" class="html"span style="font-size:14px;"?xml version="1.0" encoding="utf-8"?books book id100/id nameandroid学习/name price20/price /book book id101/id name好好学习,天天向上/name price12.2/price /boo

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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读