XML_Pull解析(1)
2014-02-04 12:23
337 查看
在上篇关于IO流中的
2.我们要解析book_bak.xml中的文件:
下面通过简单实例说明:《查找指定书名的价格》
package day5;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.junit.Test;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
//StAx :xmlpull解析步骤:
public class XMLPulldemo {
@Test
public void demo1() {
// 1.搭建工厂,生成解析器
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xpp = factory.newPullParser();
//向解析器中导入需要解析的xml文件以及文件的编码格式
xpp.setInput(new FileInputStream("books_bak.xml"), "utf-8");
int event = 0;
String bookname = null;
boolean isFound = false; //设置标志位
// 2构建循环迭代器
while ((event = xpp.getEventType()) != XmlPullParser.END_DOCUMENT) {
if (event == xpp.START_TAG) {
System.out.println(xpp.getName() + "开始标签---");
}
// if(event==xpp.END_TAG){
// System.out.println(xpp.getName()+"结束标签---");
// }
if ((event == XmlPullParser.START_TAG)
&& xpp.getName().equals("name")) {
bookname = xpp.nextText();
System.out.println(bookname);
if (bookname.equals("thin2 in java")) {
System.out.println(bookname);
isFound = true;
}
}
if (event == XmlPullParser.START_TAG
&& xpp.getName().equals("price") && isFound == true) {
System.out.println(xpp.nextText());
break;
}
xpp.next();
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<books xmlns="http://www.example.org/books" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/books books.xsd">
<book>
<name>think in java</name>
<price>98</price>
</book>
<book>
<name>thin2 in java</name>
<price>91</price>
</book>
</books>
上面即简单的xmlpull解析入门介绍,通过代码要掌握的知识点有
1.如何搭建xmlPull解析器?
2解析器xmlpullparse中有哪些事件类型常量?
Start-Doument
Th following event types are seen by next()
START_TAGAn XML start tag was read.TEXTText content was read; the text content can be retreived using the getText() method. (when in validating mode next() will not report ignorable whitespaces, use nextToken() instead)END_TAGAn end tag was readEND_DOCUMENTNo more events are available3.掌握循环迭代解析的原理。
下一篇中我将介绍如何通过xmlPULL解析进行简单的CURD(create update read delete)操作文件。
StreamTokenizer类介绍中,已经了解了一些关于通过回调事件方法,迭代解析字符的思想, 下面正式开始学习XMLPULL解析(1)
1.它是一个开源项目,如果需要在JavaEE使用它,则需要从官网下载jar包安装至(add build path)MyEclipse.
注意:android系统中默认支持XMLPULL,则不需要重新去官网下载。2.我们要解析book_bak.xml中的文件:
下面通过简单实例说明:《查找指定书名的价格》
package day5;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.junit.Test;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
//StAx :xmlpull解析步骤:
public class XMLPulldemo {
@Test
public void demo1() {
// 1.搭建工厂,生成解析器
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xpp = factory.newPullParser();
//向解析器中导入需要解析的xml文件以及文件的编码格式
xpp.setInput(new FileInputStream("books_bak.xml"), "utf-8");
int event = 0;
String bookname = null;
boolean isFound = false; //设置标志位
// 2构建循环迭代器
while ((event = xpp.getEventType()) != XmlPullParser.END_DOCUMENT) {
if (event == xpp.START_TAG) {
System.out.println(xpp.getName() + "开始标签---");
}
// if(event==xpp.END_TAG){
// System.out.println(xpp.getName()+"结束标签---");
// }
if ((event == XmlPullParser.START_TAG)
&& xpp.getName().equals("name")) {
bookname = xpp.nextText();
System.out.println(bookname);
if (bookname.equals("thin2 in java")) {
System.out.println(bookname);
isFound = true;
}
}
if (event == XmlPullParser.START_TAG
&& xpp.getName().equals("price") && isFound == true) {
System.out.println(xpp.nextText());
break;
}
xpp.next();
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<books xmlns="http://www.example.org/books" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/books books.xsd">
<book>
<name>think in java</name>
<price>98</price>
</book>
<book>
<name>thin2 in java</name>
<price>91</price>
</book>
</books>
上面即简单的xmlpull解析入门介绍,通过代码要掌握的知识点有
1.如何搭建xmlPull解析器?
2解析器xmlpullparse中有哪些事件类型常量?
Start-Doument
Th following event types are seen by next()
START_TAGAn XML start tag was read.TEXTText content was read; the text content can be retreived using the getText() method. (when in validating mode next() will not report ignorable whitespaces, use nextToken() instead)END_TAGAn end tag was readEND_DOCUMENTNo more events are available3.掌握循环迭代解析的原理。
下一篇中我将介绍如何通过xmlPULL解析进行简单的CURD(create update read delete)操作文件。
相关文章推荐
- Android学习笔记:Pull解析XML
- Android解析XML的三种方式SAX、Pull、Dom
- pull解析xml文件
- Android pull封装,直接解析xml
- Android学习笔记(七)-XML解析与生成:SAX、DOM、PULL(推荐)
- Android使用PULL解析和生成XML文件
- Android解析XML之XmlPullParser
- XML---android解析XML总结(SAX、Pull、Dom三种方式)
- Android 创建与解析XML(四)—— Pull方式
- java 解析xml文档---通过XmlPullParser解析方式
- XML使用SAX解析与PULL解析的区别
- Android Pull解析XML
- Android 使用SAX或者DOM或者pull解析XML文件
- Android开发学习---使用XmlPullParser解析xml文件
- [android] 采用pull解析xml文件
- Andrroid解析xml文件之Pull解析
- Android学习笔记(三八):资源resource(上)、XML解析(XmlPullParser)
- 解析XML(三种解析方式DOM,SAX,PULL)
- PULL解析XML
- Android Pull解析xml