最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android開發(fā)之DOM解析xml文件的方法

 更新時(shí)間:2015年12月24日 15:23:23   作者:sgx425021234  
這篇文章主要介紹了Android開發(fā)之DOM解析xml文件的方法,涉及Android中DOM工廠對(duì)象的創(chuàng)建,文檔的獲取及節(jié)點(diǎn)的遍歷技巧,需要的朋友可以參考下

本文實(shí)例講述了Android中DOM解析xml文件的方法。分享給大家供大家參考,具體如下:

一、在assets文件中寫xml文件

<?xml version="1.0" encoding="UTF-8"?> 
<persons> 
 <person id="23"> 
  <name>李明</name> 
  <age>30</age> 
 </person> 
 <person id="20"> 
  <name>李向梅</name> 
  <age>25</age> 
 </person> 
</persons>

二、在service中寫一個(gè)DOM解析的操作

package com.example.service; 
import java.io.InputStream; 
import java.util.ArrayList; 
import java.util.List; 
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 
import com.example.domain.Person; 
public class XMLDomService { 
 public List<Person> parseXML(InputStream is) { 
  List<Person> list = new ArrayList<Person>(); 
  // 創(chuàng)建DOM工廠對(duì)象 
  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  try { 
   // DocumentBuilder對(duì)象 
   DocumentBuilder builder = factory.newDocumentBuilder(); 
   // 獲取文檔對(duì)象 
   Document document = builder.parse(is); 
   // 獲取文檔對(duì)象的root 
   Element root = document.getDocumentElement(); 
   // 獲取persons根節(jié)點(diǎn)中所有的person節(jié)點(diǎn)對(duì)象 
   NodeList personNodes = root.getElementsByTagName("person"); 
   // 遍歷所有的person節(jié)點(diǎn) 
   for (int i = 0; i < personNodes.getLength(); i++) { 
    Person person = new Person(); 
    // 根據(jù)item(index)獲取該索引對(duì)應(yīng)的節(jié)點(diǎn)對(duì)象 
    Element personNode = (Element) personNodes.item(i); // 具體的person節(jié)點(diǎn) 
    // 設(shè)置id屬性值 
    person.setId(Integer.parseInt(personNode.getAttribute("id")));
    // 獲取該節(jié)點(diǎn)下面的所有字節(jié)點(diǎn) 
    NodeList personChildNodes = personNode.getChildNodes(); 
    // 遍歷person的字節(jié)點(diǎn) 
    for (int index = 0; index < personChildNodes.getLength(); index++) { 
     // 獲取子節(jié)點(diǎn) 
     Node node = personChildNodes.item(index); 
     // 判斷node節(jié)點(diǎn)是否是元素節(jié)點(diǎn) 
     if (node.getNodeType() == Node.ELEMENT_NODE) { 
      //把節(jié)點(diǎn)轉(zhuǎn)換成元素節(jié)點(diǎn) 
      Element element = (Element) node; 
      //判斷元素節(jié)點(diǎn)是否是name元素節(jié)點(diǎn) 
      if ("name".equals(element.getNodeName())) { 
       person.setName(element.getFirstChild() 
         .getNodeValue()); 
      } else if ("age".equals(element.getNodeName())) { //判斷是否是age節(jié)點(diǎn) 
       person.setAge(new Short(element.getFirstChild().getNodeValue()));
      } 
     } 
    } 
    // 把person對(duì)象加入到集合中 
    list.add(person); 
   } 
   //關(guān)閉輸入流 
   is.close(); 
  } catch (Exception e) { 
   // TODO Auto-generated catch block 
   e.printStackTrace(); 
  } 
  return list; 
 } 
}

三、在Activity中顯示操作

package com.example.lession03_xml;
import java.io.InputStream;
import java.util.List;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import com.example.domain.Person;
import com.example.service.XMLContentHandler;
import com.example.service.XMLDomService;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputBinding;
import android.widget.Button;
import android.widget.Toast;
public class XmlActivityextends Activity {
//聲明組件
public Button btn_sax,btn_dom,btn_pull;
public XMLDomService xmlDomService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//設(shè)置顯示的視圖
setContentView(R.layout.activity_xml);
xmlDomService=new XMLDomService();
//根據(jù)id獲取組件
btn_sax=(Button) findViewById(R.id.btn_sax);
btn_dom=(Button) findViewById(R.id.btn_dom);
btn_pull=(Button) findViewById(R.id.btn_pull);
//為按鈕注冊(cè)事件
btn_sax.setOnClickListener(new MyOnclickListener());
btn_dom.setOnClickListener(new MyOnclickListener());
btn_pull.setOnClickListener(new MyOnclickListener());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.xml, menu);
return true;
}
//匿名類
class MyOnclickListener implements OnClickListener{
@Override
public void onClick(View v) {
int id=v.getId();
switch (id) {
case R.id.btn_sax:
Toast.makeText(XmlActivity.this,"采用SAX解析", Toast.LENGTH_LONG).show();
try{
//SAX解析的工廠對(duì)象
SAXParserFactory factory=SAXParserFactory.newInstance();
//得到sax的解析器
SAXParser saxParser=factory.newSAXParser();
//創(chuàng)建handler對(duì)象
XMLContentHandler handlerService=new XMLContentHandler();
InputStream is=getAssets().open("csdn.xml");
//直接解析
saxParser.parse(is, handlerService);
//通過handlerService對(duì)象獲取
Toast.makeText(XmlActivity.this,"----"+handlerService, Toast.LENGTH_LONG).show();
}catch(Exception e){
e.printStackTrace();
}
break;
case R.id.btn_dom:
InputStream is=null;
try{
//獲取讀取文件的輸入流對(duì)象
is=getAssets().open("csdn.xml");
//采用dom解析
List<Person> persons=xmlDomService.parseXML(is);
//簡單測試
//Toast.makeText(XmlActivity.this, ""+persons.get(0).getName(), Toast.LENGTH_LONG).show();
Toast.makeText(XmlActivity.this,"采用DOM解析"+persons.get(0).getName(), Toast.LENGTH_LONG).show();
}catch(Exception e){
e.printStackTrace();
}
break;
case R.id.btn_pull:
Toast.makeText(XmlActivity.this,"采用PULL解析", Toast.LENGTH_LONG).show();
break;
default:
break;
}
}
}
}

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Android使用VideoView播放本地視頻和網(wǎng)絡(luò)視頻的方法

    Android使用VideoView播放本地視頻和網(wǎng)絡(luò)視頻的方法

    本文將講解如何使用Android視頻播放器VideoView來播放本地視頻和網(wǎng)絡(luò)視頻,實(shí)現(xiàn)起來還是比較簡單的,有需要的可以參考借鑒。
    2016-08-08
  • Flutter?DateTime日期轉(zhuǎn)換的詳細(xì)使用

    Flutter?DateTime日期轉(zhuǎn)換的詳細(xì)使用

    本文主要介紹了Flutter?DateTime日期轉(zhuǎn)換的詳細(xì)使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Android獲取系統(tǒng)時(shí)間的多種方法

    Android獲取系統(tǒng)時(shí)間的多種方法

    這篇文章主要介紹了Android獲取系統(tǒng)時(shí)間的多種方法,對(duì)時(shí)間進(jìn)行格式化操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android筆記之:App應(yīng)用之發(fā)布各廣告平臺(tái)版本的詳解

    Android筆記之:App應(yīng)用之發(fā)布各廣告平臺(tái)版本的詳解

    Android的廣告平臺(tái)是很多的,各市場對(duì)各平臺(tái)的接受程度是不一樣的,Android的開發(fā)者如果想集成廣告基本要考慮下面兩個(gè)問題
    2013-04-04
  • Android XUtils3框架的基本使用方法(二)

    Android XUtils3框架的基本使用方法(二)

    這篇文章主要介紹了Android XUtils3框架的基本使用方法(二)的相關(guān)資料,需要的朋友可以參考下
    2016-08-08
  • 利用Kotlin開發(fā)你的第一個(gè)Android應(yīng)用

    利用Kotlin開發(fā)你的第一個(gè)Android應(yīng)用

    Kotlin最近真的是大熱啊,所以下面這篇文章主要給大家介紹了關(guān)于利用Kotlin開發(fā)你的第一個(gè)Android應(yīng)用的相關(guān)資料,文中將實(shí)現(xiàn)的步驟介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-10-10
  • Android編程設(shè)置TextView顏色setTextColor用法實(shí)例

    Android編程設(shè)置TextView顏色setTextColor用法實(shí)例

    這篇文章主要介紹了Android編程設(shè)置TextView顏色setTextColor用法,結(jié)合實(shí)例形式分析了Android設(shè)置TextView顏色setTextColor、ColorStateList等方法的使用技巧與布局文件的設(shè)置方法,需要的朋友可以參考下
    2016-01-01
  • Android判斷網(wǎng)絡(luò)狀態(tài)的代碼

    Android判斷網(wǎng)絡(luò)狀態(tài)的代碼

    這篇文章主要為大家詳細(xì)介紹了Android判斷網(wǎng)絡(luò)狀態(tài)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 優(yōu)化和瘦身Android APK的六個(gè)小技巧

    優(yōu)化和瘦身Android APK的六個(gè)小技巧

    Android應(yīng)用的大小對(duì)用戶體驗(yàn)和應(yīng)用性能至關(guān)重要,大型APK文件會(huì)增加應(yīng)用的安裝時(shí)間,啟動(dòng)時(shí)間和頁面加載時(shí)間,降低了用戶體驗(yàn),因此,APK瘦身是Android開發(fā)中的重要任務(wù),在本文中,我們將分享6個(gè)小技巧,幫助你優(yōu)化和瘦身Android應(yīng)用,需要的朋友可以參考下
    2023-11-11
  • Android實(shí)現(xiàn)九宮格手勢密碼

    Android實(shí)現(xiàn)九宮格手勢密碼

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)九宮格手勢密碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06

最新評(píng)論

宁武县| 松阳县| 吴川市| 古丈县| 元谋县| 前郭尔| 随州市| 明光市| 西吉县| 昭觉县| 洛阳市| 双柏县| 教育| 广河县| 铜梁县| 徐州市| 东平县| 教育| 玛多县| 辽源市| 盐津县| 浠水县| 万载县| 汉川市| 油尖旺区| 昌吉市| 许昌市| 安陆市| 公安县| 杭州市| 寿阳县| 伊川县| 兴城市| 洞口县| 安庆市| 桃园市| 民乐县| 沽源县| 府谷县| 化德县| 明水县|