XML解析器如何识别XMLcass编码识别类型

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&第一种方式(简洁,直接用pullparser.nextText()来返回下一个String类型的值):
1 package lee.
3 import java.io.InputS
4 import java.util.ArrayL
5 import java.util.L
6 import org.xmlpull.v1.XmlPullP
7 import android.util.X
8 import lee.vo.P
10 public class XMLPullService {
public List&Person& readXML(InputStream inStream) throws Exception{
List&Person& persons = null;
Person person = null;
XmlPullParser pullParser = Xml.newPullParser(); //获取Pull解析器 Xml.newPullParser()添加一个pullParser解析器带命名空间的支持
pullParser.setInput(inStream, "UTF-8");
//设置Pull解析器进行解析的XML内容
int event = pullParser.getEventType();
//获取第一个事件
while(event!=XmlPullParser.END_DOCUMENT)
//如果还不是结束文档事件,迭代每一个元素
switch (event)
case XmlPullParser.START_DOCUMENT:
//开始文档事件
persons = new ArrayList&Person&();
case XmlPullParser.START_TAG:
//开始元素事件
if("person".equals(pullParser.getName()))
//pullParser.getName()得到当前指针所指向的节点的名称
person = new Person();
int id = new Integer(pullParser.getAttributeValue(0));
person.setId(id);
if(person!=null)
if("name".equals(pullParser.getName()))
String name = pullParser.nextText();
//得到当前节点下一个文本节点的内容------&
&name&liming&/name& 得到liming
person.setName(name);
else if("age".equals(pullParser.getName()))
String age = pullParser.nextText(); //获取下一个Text类型节点的值
person.setAge(new Short(age));
case XmlPullParser.END_TAG:
//结束元素事件
if("person".equals(pullParser.getName()))
persons.add(person);
person = null;
event = pullParser.next();
//进入下一个元素并触发相应事件
&第二种方式(较为复杂,用pullparser.Next()来进入下一个元素,用.textNext来返回当前String类型元素的值):
1 public class PullXmlActivity extends Activity{
private List&Book& list=null;
private PullXmlA
private ListV
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.listview);
lv=(ListView)findViewById(R.id.listView);
in = this.getAssets().open("books.xml");
list=pullxml(in);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
adapter=new PullXmlAdapter(PullXmlActivity.this, list);
lv.setAdapter(adapter);
/**xml文件的获取
* 1.xml文件放在res的xml文件夹下(推荐)使用XmlResourceParser xmlParser = this.getResources().getXml(R.xml.XXX);
* 2.xml文件放在raw的xml文件夹下使用InputStream inputStream =this.getResources().openRawResource(R.raw.XXX);
* 3.xml文件放在assets文件夹下(本人测试发现通过此方法获取的XML文档不能带有首行:&?xml version="1.0" encoding="utf-8"?&,
* 否则解析报错,具体原因未查明:InputStream inputStream = getResources().getAssets().open(fileName);
* 4.xml文件放在SD卡, path路径根据实际项目修改,此次获取SDcard根目录:
* String path = Environment.getExternalStorageDirectory().toString();
* File xmlFlie = new File(path+fileName);
* InputStream inputStream = new FileInputStream(xmlFlie);
public List&Book& pullxml(InputStream in)throws Exception{
List&Book& list=null;
Book book = null;
// 由android.util.Xml创建一个XmlPullParser实例
XmlPullParser parser = Xml.newPullParser();
// 设置输入流 并指明编码方式
parser.setInput(in, "UTF-8");
// 产生第一个事件
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
// 判断当前事件是否为文档开始事件
case XmlPullParser.START_DOCUMENT:
list=new ArrayList&Book&();// 初始化list集合
// 判断当前事件是否为标签元素开始事件
case XmlPullParser.START_TAG:
if (parser.getName().equals("book")) { // 判断开始标签元素是否是book
book = new Book();
} else if (parser.getName().equals("id")) {
eventType = parser.next();
// 得到book标签的属性值,并设置book的id
book.setId(Integer.parseInt(parser.getText()));
} else if (parser.getName().equals("name")) { // 判断开始标签元素是否是book
eventType = parser.next();
book.setName(parser.getText());
} else if (parser.getName().equals("price")) { // 判断开始标签元素是否是price
eventType = parser.next();
book.setPrice(Float.parseFloat(parser.getText()));
// 判断当前事件是否为标签元素结束事件
case XmlPullParser.END_TAG:
if (parser.getName().equals("book")) { // 判断结束标签元素是否是book
list.add(book); // 将book添加到books集合
book = null;
// 进入下一个元素并触发相应事件
eventType = parser.next();
阅读(...) 评论()xml解析器_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
上传于||文档简介
&&x&#8203;m&#8203;l&#8203;解&#8203;析&#8203;器&#8203;讲&#8203;解&#8203;,&#8203;北&#8203;大&#8203;青&#8203;鸟&#8203;高&#8203;级&#8203;讲&#8203;师&#8203;讲&#8203;解
大小:2.03MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢程序人生 ABAPer(837)
package com.lesson30
import java.util.ArrayL
import java.util.L
import javax.xml.parsers.SAXParserF
import org.xml.sax.A
import org.xml.sax.SAXE
import org.xml.sax.XMLR
import org.xml.sax.helpers.DefaultH
public class TestSap {
&&&&public
static void main(String[] args) {
&&&&&&&&try
&&&&&&&&&&&&//
调用 读取xml文件函数
&&&&&&&&&&&&readXml();
catch (Exception e) {
&&&&public
static void readXml() throws Exception {
&&&&&&&&//实例化一个xml的sap解析器
&&&&&&&&XMLReader
sap = SAXParserFactory.newInstance().newSAXParser()
&&&&&&&&&&&&&&&&.getXMLReader();
&&&&&&&&//实例化一个操作
里面有开始 结束 内容
&&&&&&&&MyHandle
handle = new MyHandle();
&&&&&&&&//取操作里面的内容
&&&&&&&&sap.setContentHandler(handle);
&&&&&&&&sap.parse(&abc.xml&);
&&&&&&&&//输出操作的数据内容
&&&&&&&&System.out.println(handle.getDataList());
//操作里面包含开始 结束 内容
class MyHandle extends DefaultHandler {
new一个student的集合
&&&&List&student&
studentList = new ArrayList&student&();
&&&&student
&&&&String
&&&&public
void startElement(String uri, String localName, String qName,
&&&&&&&&&&&&Attributes
atts) throws SAXException {
//输出开始的名
&&&&&&&&System.out.println(&begin&
&#43; localName &#43; &:& &#43; qName);
&&&&&&&&readtag
&&&&&&&&//如果读到开始的名字student时
就生成一个新的对象
&&&&&&&&if
(qName.equals(&student&)) {
&&&&&&&&&&&&stu
= new student();
&&&&public
void endElement(String uri, String localName, String qName)
&&&&&&&&&&&&throws
SAXException {
&&&&&&&&System.out.println(&end&
&#43; localName &#43; &:& &#43; qName);
&&&&&&&&//如果
&&&&&&&&if
(&student&.equals(qName)) {
&&&&&&&&&&&&studentList.add(stu);
&&&&&&&&readtag
&&&&public
void characters(char[] ch, int start, int length)
&&&&&&&&&&&&throws
SAXException {
&&&&&&&&System.out.println(new
String(ch, start, length));
&&&&&&&&//如果读到tel时
就 添加新的内容
&&&&&&&&if
(readtag.equals(&tel&)) {
&&&&&&&&&&&&stu.tel
= new String(ch, start, length);
&&&&&&&&//如果读到name时
内容给name
&&&&&&&&if
(readtag.equals(&name&)) {
&&&&&&&&&&&&stu.name
= new String(ch, start, length);
// 返回一个学生集合
&&&&public
List getDataList() {
&&&&&&&&return
class student {
&&&&String
&&&&String
&&&&String
&&&&public
String toString() {
&&&&&&&&return
name &#43; &:& &#43;
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1660717次
积分:30444
积分:30444
排名:第121名
原创:1006篇
转载:1822篇
译文:76篇
评论:123条
(80)(71)(147)(92)(73)(53)(88)(59)(22)(113)(43)(9)(22)(144)(240)(122)(55)(8)(5)(15)(14)(3)(2)(32)(2)(4)(5)(11)(34)(35)(39)(35)(36)(33)(10)(41)(39)(40)(16)(5)(12)(55)(38)(33)(24)(21)(43)(56)(55)(10)(68)(21)(53)(18)(76)(45)(159)(224)(9)

我要回帖

更多关于 cass编码识别 的文章

 

随机推荐