當前位置:首頁 » 安卓系統 » androidpull

androidpull

發布時間: 2023-07-16 10:57:27

① 請問怎麼用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中怎麼使用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的消息推送怎麼做

android的消息推送辦法:
1、可以使用輪詢(Pull)方式
就是用客戶端定時向伺服器發送相關的信息,一旦伺服器有變化就會馬上同步消息。但這種方式對伺服器的壓力是十分大的,而且比較費客戶端的流量,就是不斷地向伺服器發送請求,但是這樣開發很簡單。
2、使用持久連接(Push)方式
就是客戶端和伺服器之間建立起一連接,這樣就可以實現消息的及時發送,而且這種方式開發難度大,開發周期較長。但是這是一種最常使用的方式,目前主流的消息推送都是通過這種方式做的。
選擇消息推送軟體,深圳極光就不錯。極光截至2020年12月,已有超169萬款APP在使用極光提供的服務。而且專注於為開發者提供穩定高效的消息推送、一鍵認證以及流量變現等服務,助力開發者的運營、增長與變現。

④ 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文件直到文件的尾部。

熱點內容
徵婚交友源碼 發布:2025-02-05 17:45:24 瀏覽:918
3nvm伺服器怎麼搭建 發布:2025-02-05 17:43:52 瀏覽:661
cocosandroid開發 發布:2025-02-05 17:22:17 瀏覽:669
編程員發型 發布:2025-02-05 17:09:18 瀏覽:226
網站會員管理源碼 發布:2025-02-05 17:03:32 瀏覽:194
伺服器埠怎麼調節 發布:2025-02-05 16:57:41 瀏覽:48
樂山海棠社區民意上傳 發布:2025-02-05 16:55:52 瀏覽:511
編程老爺爺 發布:2025-02-05 16:48:20 瀏覽:130
支持ftp的免費空間 發布:2025-02-05 16:32:00 瀏覽:891
python時間比較 發布:2025-02-05 16:31:46 瀏覽:52