Android入门(5) XML
来源:互联网 发布:淘宝韩版女装店铺推荐 编辑:程序博客网 时间:2024/06/05 21:57
5.2 XML
5.2.1.XML的解析简介
1、常见的XML解析方式有三种,DOM、SAX、Pull,Android系统中推荐使用Pull
2、 Pull解析器是一个开源的Java项目,Android系统内部解析XML文件均为此种方式,也可用于JavaEE项目
3、 Android SDK中已经集成了Pull解析器,无需添加任何jar文件
4、 Pull解析器运行方式与SAX类似,提供各种事件的判断
5、 官方网站:http://xmlpull.org/
5.2.2使用Pull解析器解析XML文件
1、Xml.newPullParser() 获得解析器
2、 parser.setInput(in, "UTF-8") 设置输入流以及编码
3、 parser.getEventType() 获取解析到当前的一个事件代码
4、parser.next() 获取下一个解析事件,得到一个事件代码
5、 XmlPullParser中定义了常量来标识各种解析事件
START_DOCUMENT、END_DOCUMENT 、START_TAG 、END_TAG 、TEXT
5.2.3 使用XmlSerializer写出XML
1、 Xml.newSerializer() 获得XML持久序列对象
2、使用以下方法生成XML,和XML文档顺序类似
startDocument
startTag
attribute
text
endTag
endDocument
5.2.4 XML读写示例代码:
public void testReadFile() throws Exception{List<Book> books = new ArrayList<Book>();Book b = null;XmlPullParser parser = Xml.newPullParser(); //获取XmlPull解析器InputStream in = getContext().openFileInput("books.xml");parser.setInput(in, "utf-8");//循环的第一个参数是获取当然事件代码,接着是第二参数将当前事件代码与文档结束事件代码判断是否要结果。//第三参数是循环一次结整个后执行解析文档下一步以获得下个事件的代码。for(int eventType= parser.getEventType(); eventType != XmlPullParser.END_DOCUMENT;eventType=parser.next()){if(eventType==XmlPullParser.START_TAG){if("书".equals(parser.getName())){ //书开始了,则New Book出来b = new Book();books.add(b);String category = parser.getAttributeValue(null, "分类"); //获取书标签中,分类属性的值b.setCategory(category);String publisher = parser.getAttributeValue(null, "出版社");b.setPublisher(publisher);}else if("书名".equals(parser.getName())){b.setName(parser.nextText()); //parser.nextText即将当前标签的下一个节点对象(Text)文本值设置进name中。}else if("作者".equals(parser.getName())){b.setAuthor(parser.nextText());}else if("售价".equals(parser.getName())){b.setPrice(Float.valueOf(parser.nextText()));}}}in.close();for (Book book : books) {System.out.println(book);}//手动加个测试对象中去,以便写入文件books.add(new Book("小说","李卫当官","未知",65f,"北大"));testsaveFile(books);}private void testsaveFile(List<Book> books) throws Exception{OutputStream out = getContext().openFileOutput("books.xml", Context.MODE_PRIVATE); //获取输出流XmlSerializer xs = Xml.newSerializer(); //获取Xml的持久序列对象XmlSerializer对象xs.setOutput(out, "utf-8");xs.startDocument("utf-8", true); //开启文档xs.startTag(null, "books"); //标签开始for (Book book : books) { xs.startTag(null, "book");if(null != book.getPublisher())xs.attribute(null, "pulisher",book.getPublisher());if(null != book.getCategory())xs.attribute(null, "category", book.getCategory());xs.startTag(null, "name");xs.text(book.getName());xs.endTag(null, "name");xs.startTag(null, "author");xs.text(book.getAuthor());xs.endTag(null, "author");xs.startTag(null, "price");xs.text(book.getPrice()+"");xs.endTag(null, "price");xs.endTag(null, "book");}xs.endTag(null, "books");//标签结束xs.endDocument(); //结束文档out.close();}
- Android入门(5) XML
- android 入门xml布局文件
- Android XML Shape使用入门
- android 入门xml布局文件
- Android入门:Pull解析XML
- android 入门xml布局文件
- Android入门:Pull解析XML
- android 入门xml布局文件
- android 入门xml布局文件
- android的xml动画入门
- android xml布局文件入门
- XML入门(5)-XML标准
- Android入门进阶教程(10)-Xml解析
- android 入门xml布局文件整理
- Android入门--style.xml设置和应用
- XML入门指南(5)XML属性
- XML入门指南(5)XML属性
- XML 入门
- 杭电OJ题 1391 Number Steps 解题报告
- 初始化条件变量pthread_cond_init
- Hibernate 之 Persistence
- GNU C
- struts2.1.6 + hibernate3.3 + spring3.0 遇到的问题
- Android入门(5) XML
- Oracle 分页的三种情况
- Android 学习 应用使用大文件的方法 读取sd卡的数据库
- POJ3267
- 关于同时使用MacVim和zsh产生PATH读取错误的解决办法
- NAND FLASH & ECC
- CKEditor 4使用方法,来自http://docs.ckeditor.com/#!/guide/dev_ckeditor_js_load官网地址
- ARCGIS viewer入门(7)扩展arcgis server flex API功能
- Hacking Tut Running MapleStory on Vmware