pull解析器解析xml

2021-07-08 17:20:30 字數 3190 閱讀 9402

利用pull解析xml檔案需要下面幾個步驟:

1)獲取xmlpullparser物件。這裡有兩個方法:通過xmlpullparse***ctory獲取xmlpullparser物件,或者直接使用xml.newpullparser()方法獲取。栗子如**一所示。

2)通過xmlpullparser物件設定輸入流。

3)通過parser.next(),持續的解析xml檔案直到檔案的尾部。

下面的幾個方法是經常需要的:xmlpullparse***cotry.newinstance( )    facotry.newpullparser( )  xml.newpullparser() parser.setinput( )    

parser.next( ).

注意:1)parser.next()方法使指向下移乙個最小元素。

舉個栗子:

靜夜思

這這裡首先指向,呼叫parser.next()後,會指向 靜夜思 ,再呼叫parser.next(),指向。

2)我無論使用現有的xml檔案還是用xml字串作為資料來源,parser.nexttext()方法皆不好使,會報xmlpullparserexception。暫不知原因。

3)使用xml檔案做資料來源時,使用parser.next()會報nullpointexception。不知道原因,猜測是格式有誤。

4)解析xml時,有以下方式:

方式一,判斷標籤型別。下面是栗子。

while (eventtype != xmlpullparser.end_document) 

if (eventtype == xmlpullparser.start_tag)

if (eventtype == xmlpullparser.text)

if (eventtype == xmlpullparser.end_tag)

方式二,判斷標籤name,下面是栗子。

while (eventtype != xmlpullparser.end_document)  else if ("title".equals(parser.getname()))  else if ("author".equals(parser.getname()))  else if ("content".equals(parser.getname()))

方式三,兩者混合,本人比較推薦。

while (type != xmlpullparser.end_document)  else if ("city".equals(parser.getname()))  else if ("name".equals(parser.getname())) 

case xmlpullparser.text:

log.i("weatherservice", "xmltext");

break;

case xmlpullparser.start_document:

log.i("weatherservice", "startdoc");

break;

case xmlpullparser.end_tag:

log.i("weatherservice", "endtag");

if ("city".equals(parser.getname()))

break;

}

**如下:

**一:使用字串作為資料來源

public class mainactivity extends activity 

if (eventtype == xmlpullparser.start_tag)

if (eventtype == xmlpullparser.text)

if (eventtype == xmlpullparser.end_tag)

eventtype = parser.next(); // 不斷的去更新

}} catch (xmlpullparserexception e) catch (ioexception e)

try else if ("poem".equals(parser.getname())) else if ("title".equals(parser.getname())) else if ("author".equals(parser.getname())) else if ("content".equals(parser.getname()))

eventtype = parser.next(); // 不斷的去更新

}} catch (xmlpullparserexception e) catch (ioexception e)

}}

**二:

public class weatherservice  else if ("city".equals(parser.getname()))  else if ("name".equals(parser.getname()))  else if ("weather".equals(parser.getname()))  else if ("temp".equals(parser.getname()))  else if ("pm".equals(parser.getname()))  else if ("wind".equals(parser.getname())) 

case xmlpullparser.text:

log.i("weatherservice", "xmltext");

break;

case xmlpullparser.start_document:

log.i("weatherservice", "startdoc");

break;

case xmlpullparser.end_tag:

log.i("weatherservice", "endtag");

if ("city".equals(parser.getname()))

break;

}type = parser.next();

}istream.close();

return weatherinfos;

}}

參考頁面

1) xml解析之pull解析:

2)pull解析和生成xml檔案

XML解析 Jsoup解析器

jsoup快捷查詢方式 jsoup概念 跳轉到目錄 jsoup基本使用 提取碼 0uvi 獲取document物件 獲取對應標籤的element物件 獲取資料 public static void getfirstname throws exception jsoup中的物件 跳轉到目錄 獲取對應的...

XML解析之PULL解析

pull解析 為解決sax的一些侷限 不能手動控制解析結束 出現pull解析 使用pull解析需要匯入兩個jar包 kxml2 2.3.0.jar xmlpull 1 0 5.jar 核心類 xmlpullparse ctory xmlpullparser 步驟 獲取工廠類例項 xmlpullpar...

XML 解析之 jaxp 解析器

sax 解析 採用事件驅動,邊讀邊解析.從上到下,一行一行的解析,解析到某乙個物件,把物件返回.xml 解析器 sax 解析使用到的類 jaxp 解析器的 dom 方式解析 xml 檔案 documentbuilder 解析器類 documentbuilde ctory 解析器工廠 使用 jaxp ...