当前位置:首页 » 安卓系统 » androidpullxml

androidpullxml

发布时间: 2022-09-27 21:13:15

❶ 安卓用Pull解析xml,连接服务器读取xml为啥log.d没有输出

步骤:
1.连接服务器获取xml文件;
2.使用pull解析xml文件存入实体对象中;
3.解析后将实体对象存入List集合中;
4.使用BaseAdapter,将List集合中中的数据显示在listview中;
注意权限的添加;
xml布局文件:
item_listview.xml

[html] view plain print?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<com.loopj.android.image.SmartImageView
android:id="@+id/image"
android:layout_width="90dp"
android:layout_height="70dp"
android:layout_alignBottom="@+id/tv_comment"
android:layout_alignParentLeft="true"
android:layout_margin="5dp"
android:layout_alignParentTop="true"
android:src="@drawable/ic_launcher" />

<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/image"
android:singleLine="true"
android:text="新闻标题"
android:textSize="22sp" />

<TextView
android:id="@+id/tv_detail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/tv_title"
android:layout_toRightOf="@id/image"
android:lines="2"
android:text="新闻内容新闻内容新闻内容新闻内容新闻内容"
android:textSize="15sp" />

<TextView
android:id="@+id/tv_comment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@id/tv_detail"
android:text="13833条评论"
android:textColor="#ff0000" />

</RelativeLayout>

❷ 关于Android中使用PULL解析XML文档抛出异常的问题

只对xml文件中的某些内容感兴趣、可以使用xpath,dom4j、jdom都支持xpath。

❸ android pull解析xml相同的标签名

Pull解析和Sax解析很相似,都是轻量级的解析
我以前只用Sax解析 不过原理都是相同的
解析判断如果是<>尖括号里面的用getAttributeValue (0)
0是第一个位置的元素 相当于你上面的title
如果名字都是一样的解析的时候很难判断解析的是哪个name
一般不会有这么麻烦的应用吧

❹ 请问怎么用android pull解析web传回的xml文件

2.如果是从网络回传回的XML文件,我更推荐以数据流的方式输入到内存,使用Android的XmlPullParser解析器对其进行解析,下面我写一个简单的例子方便你理解 Person.xml <persons>
<person id="23">
<name>liming</name>
<age>30</age></person><person id="20">
<name>lixiangmei</name>
<age>25</age></person></persons> 使用Pull解析器的逻辑: public static List<Person> getPersons(InputStream inStream) throws Throwable{ //将XML文件以数据流的方式输入
List<Person> persons = null;
Person person = null;
XmlPullParser parser = Xml.newPullParser(); //创建Pull解析器对象实例
parser.setInput(inStream, "UTF-8"); //设置解析的编码格式为utf-8编码
int eventType = parser.getEventType(); //因为可以手动的去获取事件,以控制解析XML文档的过程, //所以我们可以在循环中不断的提取事件,根据事件的类型做相应的逻辑处理
while(eventType!=XmlPullParser.END_DOCUMENT){
switch (eventType) {
case XmlPullParser.START_DOCUMENT: //遇到XML文档的根元素,即<persons>这个标签
persons = new ArrayList<Person>(); //创建person集合break;case XmlPullParser.START_TAG: //遇到XML文档中的标签起始元素
String name = parser.getName();
if("person".equals(name)){
person = new Person();
person.setId(new Integer(parser.getAttributeValue(0)));}if(person!=null){
if("name".equals(name)){
person.setName(parser.nextText());//注意,是获取<person>这个标签的文本信息,调用nextText()这个方法}if("age".equals(name)){
person.setAge(new Short(parser.nextText()));}}break;case XmlPullParser.END_TAG://遇到XML文档中的结束标签元素
if("person".equals(parser.getName())){
persons.add(person);
person = null; //这句话要注意,将这个person类型对象的引用置空,因为在循环中要继续遍历,生成新的person对象}break;}eventType = parser.next(); //不断提取事件}return persons;}
3.以上的Demo虽然小

❺ android 用Pull 方式解析XML时,父标签与子标签之间的文本要如何获取 如图中的sometext要怎么获取

int eventType = parser.getEventType();

while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT://文档开始事件,可以进行数据初始化处理
.........
break;
case XmlPullParser.START_TAG://开始元素事件
String name = parser.getName();
if (name.equalsIgnoreCase("father")) {
//获取下一个文本信息
String sometext = parser.nextText();

}
............
eventType = parser.next();
}

❻ 在android中怎么使用pullparse解析.xml文件

Pull解析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。跟SAX不同的是, Pull解析器产生的事件是一个数字,而非方法,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值。
下面我们通过Demo例子来介绍如何使用PULL机制来解析XML文件。先看下如下工程的目录结构:

按以下步骤进行操作:
[1] 新建一个XML文件,命名为student.xml。同时把XML文件放置到assets目录下。student.xml文件的内容如下:
[html] view plain
<?xml version="1.0" encoding="utf-8"?>
<students>
<student id="20110806100">
<name>小明</name>
<age>22</age>
<sex>男</sex>
</student>
<student id="20110806101">
<name>小李</name>
<age>24</age>
<sex>男</sex>
</student>
<student id="20110806102">
<name>小丽</name>
<age>21</age>
<sex>女</sex>
</student>
</students>

[2] 根据XML文件中的节点目录,创建一个相对应的实体类,来保存解析的相应信息。在包:com.andyidea.entity下新建Student.java类。
[html] view plain
package com.andyidea.entity;

public class Student {

private String id;
private String name;
private int age;
private String sex;

public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}

}

[3] 定义一个使用PULL解析XML文件的工具类:ParserByPULL.java。
[html] view plain
package com.andyidea.util;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;

import android.util.Xml;

import com.andyidea.entity.Student;

public class ParserByPULL {

//采用XmlPullParser来解析XML文件
public static List<Student> getStudents(InputStream inStream) throws Throwable
{
List<Student> students = null;
Student mStudent = null;

//========创建XmlPullParser,有两种方式=======
//方式一:使用工厂类XmlPullParserFactory
XmlPullParserFactory pullFactory = XmlPullParserFactory.newInstance();
XmlPullParser parser = pullFactory.newPullParser();
//方式二:使用Android提供的实用工具类android.util.Xml
//XmlPullParser parser = Xml.newPullParser();

//解析文件输入流
parser.setInput(inStream, "UTF-8");
//产生第一个事件
int eventType = parser.getEventType();
//只要不是文档结束事件,就一直循环
while(eventType!=XmlPullParser.END_DOCUMENT)
{
switch (eventType)
{
//触发开始文档事件
case XmlPullParser.START_DOCUMENT:
students = new ArrayList<Student>();
break;
//触发开始元素事件
case XmlPullParser.START_TAG:
//获取解析器当前指向的元素的名称
String name = parser.getName();
if("student".equals(name))
{
//通过解析器获取id的元素值,并设置student的id
mStudent = new Student();
mStudent.setId(parser.getAttributeValue(0));
}
if(mStudent!=null)
{
if("name".equals(name))
{
//获取解析器当前指向元素的下一个文本节点的值
mStudent.setName(parser.nextText());
}
if("age".equals(name))
{
//获取解析器当前指向元素的下一个文本节点的值
mStudent.setAge(new Short(parser.nextText()));
}
if("sex".equals(name))
{
//获取解析器当前指向元素的下一个文本节点的值
mStudent.setSex(parser.nextText());
}
}
break;
//触发结束元素事件
case XmlPullParser.END_TAG:
//
if("student".equals(parser.getName()))
{
students.add(mStudent);
mStudent = null;
}
break;
default:
break;
}
eventType = parser.next();
}
return students;
}

❼ android中xml解析pull与sax有什么区别

android中xml解析pull与sax,可以通过以下介绍了解区别:

1、SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于android等移动设备,SAX全称是Simple API for Xml,既是指一种接口,也是一个软件包,作为接口,sax是事件驱动型xml解析的一个标准接口。具有如下特点1. 解析效率高,占用内存少。2.可以随时停止解析。3.不能载入整个文档到内存。4.不能写入xml5.SAX解析xml文件采用的是事件驱动。

2、Pull解析XML文件的方式与SAX解析XML文件的方式大致相同,他们都是基于事件驱动的,页是Android中默认的解析方式,更适用于移动平台的解析方式。所以,利用pull解析XML文件需要下面几个步骤:1.通过XMLPullParserFactory获取XMLPullParser对象。2.通过XMLPullParser对象设置输入流。3.通过parser.next(),持续的解析XML文件直到文件的尾部。

❽ android中xml解析pull与sax有什么区别

xml解析一共有几种方式:
一个是DOM,它是生成一个树,有了树以后搜索、查找都可以做。
另一种是基于流的,就是解析器从头到尾解析一遍xml文件。
基于流的目前有两种比较有名,一个是SAX,另一个是PULL
sax的原理是解析器解析过程中通过回调把tag/value值等传递可以比较、操作。而pull的原理是它只告诉一个tag开始或者结束了,至于tag/value的值是什么需要自己去向parser问,所以叫做pull,而sax看起来是push给的。sax/pull还有一点区别,随便找个sax和pull的例子比较一下就可以发现,pull是一个while循环,随时可以跳出,而sax不是,sax是只要解析了,就必须解析完成。

❾ android中,使用pull解析服务器端的xml数据,请问pull解析对xml数据格式有什么要求

XmlPullParser parser = Xml.newPullParser();
parser.setInput(is, "UTF-8");
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:

break;
case XmlPullParser.START_TAG:
if (parser.getName().equals("city")) {
//----city---
} else if (parser.getName().equals("id")) {
eventType = parser.next();
//parser.getText() 就是id值
System.out.println("id ="+parser.getText());
} else if (parser.getName().equals("range")) {
eventType = parser.next();
//parser.getText() 就是range值
} else if (parser.getName().equals("title")) {
eventType = parser.next();
//parser.getText() 就是title值
} else if (parser.getName().equals("index")) {
eventType = parser.next();
//parser.getText() 就是index值
}
break;
case XmlPullParser.END_TAG:
if (parser.getName().equals("city")) {
}
break;
}
eventType = parser.next();
}
最好是 新建一个class City

❿ android程序中 客户端如何用pull 读取远程服务器上的xml文件 请给出代码。谢谢。

可以用 httpclient get到这个xml
然后把这个流交给pull解析器解析就完了
//获取xml文件流
URL url = new URL("http://www.sohu.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5* 1000);//设置连接超时
conn.setRequestMethod(“GET”);//以get方式发起请求
if (conn.getResponseCode() != 200) throw new RuntimeException("请求url失败");
InputStream is = conn.getInputStream();//得到网络返回的输入流
conn.disconnect();
//解析xml
List<Person> persons = readXML(is);

public static List<Person> readXML(InputStream inStream) {
XmlPullParser parser = Xml.newPullParser();
try {
parser.setInput(inStream, "UTF-8");
int eventType = parser.getEventType();
Person currentPerson = null;
List<Person> persons = null;
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT://文档开始事件,可以进行数据初始化处理
persons = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG://开始元素事件
String name = parser.getName();
if (name.equalsIgnoreCase("person")) {
currentPerson = new Person();
currentPerson.setId(new Integer(parser.getAttributeValue(null, "id")));
} else if (currentPerson != null) {
if (name.equalsIgnoreCase("name")) {
currentPerson.setName(parser.nextText());// 如果后面是Text节点,即返回它的值
} else if (name.equalsIgnoreCase("age")) {
currentPerson.setAge(new Short(parser.nextText()));
}
}
break;
case XmlPullParser.END_TAG://结束元素事件
if (parser.getName().equalsIgnoreCase("person") && currentPerson != null) {
persons.add(currentPerson);
currentPerson = null;
}
break;
}
eventType = parser.next();
}
inStream.close();
return persons;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

热点内容
phpurl中文乱码 发布:2024-05-08 06:25:34 浏览:52
社保账户及密码忘了怎么办 发布:2024-05-08 06:25:32 浏览:749
个人热点的密码怎么改 发布:2024-05-08 06:19:13 浏览:638
传递加密 发布:2024-05-08 06:19:02 浏览:681
c语言是啥意思啊 发布:2024-05-08 06:01:09 浏览:695
帝豪换压缩机 发布:2024-05-08 05:42:15 浏览:902
java文件时间 发布:2024-05-08 05:32:04 浏览:267
空气压强算法 发布:2024-05-08 05:29:47 浏览:294
c语言中double的范围 发布:2024-05-08 04:53:29 浏览:122
脏小豆服务器怎么加入 发布:2024-05-08 04:40:40 浏览:552