當前位置:首頁 » 安卓系統 » 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;
}
}

熱點內容
監控腳本實用 發布:2022-11-30 14:14:28 瀏覽:371
九陰真經顯血腳本 發布:2022-11-30 14:14:22 瀏覽:191
浪潮伺服器mgn口地址 發布:2022-11-30 14:13:41 瀏覽:791
linux鎖屏設置 發布:2022-11-30 14:08:20 瀏覽:887
演算法轉讓 發布:2022-11-30 14:07:24 瀏覽:16
我的世界為什麼從伺服器斷開連接 發布:2022-11-30 14:07:04 瀏覽:387
怎麼擠出母乳存儲袋中的空氣 發布:2022-11-30 14:05:32 瀏覽:27
linuxbin文件 發布:2022-11-30 14:01:19 瀏覽:474
購物網站源碼php 發布:2022-11-30 13:58:15 瀏覽:466
python執行java 發布:2022-11-30 13:56:23 瀏覽:936