4 安卓網路程式設計之XML總匯篇

2021-08-29 05:12:22 字數 4303 閱讀 5392

零、前言

xml是一種應用廣泛的標記語言,我們常見的html便是它的子集。形如:***組成的閉合標籤

安卓的res目錄下的xml想必大家都是否熟悉,它們最終都是在**中被讀取並解析發揮效果的

安卓的sharedpreferences是以xml的形式儲存資料的,就連androidmanifest注意一看也是xml

可以說xml涉及到了安卓的很多方面,我們並不陌生,xml最大的好處就是解耦,容易復用和更換

pull解析.png

xml常見的三種解析方式:

解析方式

載入驅動方式

可修改?

自定義結束?

效率備註

pull解析

事件驅動否是

高安卓專有

sax解析

事件驅動否否

高無dom解析

直接全部載入是否

低解析時構建dom樹

準備的待解析xml:

<?xml version="1.0" encoding="utf-8"?>

問天劍2000

語熙華 皇刀

3000

九方玄玉

一、pull解析概述
pull是安卓內建的,基於事件觸發的解析器

pull解析器小巧輕便,解析速度快,簡單易用

主動從解析器中獲取事件,可以在滿足了需要的條件後不再獲取事件,結束解析

1、pull解析xml:
private arraylistpar***mlwithpull() 

break;

case xmlpullparser.end_tag://當事件型別是終止標籤時:即

if ("weapon".equals(pullparser.getname()))

break;

}eventtype = pullparser.next();//解析下一元素,更新event

}} catch (exception e) finally catch (ioexception e) }}

return mweapons;

}

2、pull寫入xml:
/**

* 備份xml--當然也可以備份任意的實體類作為xml,比如簡訊,聯絡人

*/private void backupxml()

serializer.endtag("", "weapons");//標籤結束

serializer.enddocument();//文件結束

} catch (exception e) finally catch (ioexception e) }}

}

二、sax解析概述:(****** api for xml)
sax解析方式會逐行地去掃瞄xml文件,當遇到標籤時會觸發解析處理器,採用事件處理的方式解析xml 

優點:在讀取文件的同時即可對xml進行處理,不必等到文件載入結束,相對快捷,所以可以解析超大xml

缺點:只能用來讀取xml中資料,無法進行增刪改。

1、sax解析xml
/**

* * @return

*/private arraylistpar***mlwithsax()

mpertag = localname;

}/**解析標籤的內容的時候呼叫

** @param ch 當前文字節點的位元組陣列

* @param start 位元組開始的位置 預設 0 全部讀取

* @param length 長度

* @throws saxexception

*/@override

public void characters(char ch, int start, int length) throws saxexception else if ("atk".equals(mpertag)) else if ("user".equals(mpertag))

}/**

* 標籤解析結束呼叫

* @param uri

* @param localname

* @param qname

* @throws saxexception

*/@override

public void endelement(string uri, string localname, string qname) throws saxexception

mpertag = null;

}});

} catch (exception e) finally catch (ioexception e) }}

return mweapons;

}

2、sax儲存xml
/**

* sax建立xml檔案

*/private void saxcreatexml()

handler.endelement("", "", "weapons");

//關閉document

handler.enddocument();

} catch (exception e) finally catch (ioexception e) }}

}

三、dom解析概述:
dom將整個xml檔案載入到記憶體中,並構建出節點樹;

應用程式可以通過遍歷節點樹的方式來解析xml檔案中的各個節點、屬性等資訊;

優點:對xml節點的新增修改等,而且解析也很方便

缺點比較耗費記憶體,解析速度也不快

1、dom解析xml
/**

* dom解析xml

* @return

*/private arraylistpar***mlwithdom() else if ("atk".equals(nodename)) else if ("user".equals(nodename)) }}

mweapons.add(mweapon);

}} catch (exception e)

return mweapons;

}

2、dom儲存xml
/**

* sax建立xml檔案

*/private void domcreatexml()

//為了得到xslt引擎建立物件

transforme***ctory tff = transforme***ctory.newinstance();

//建立xslt引擎物件輸出xml文件

transformer tf = tff.newtransformer();

//獲取屬性物件

properties pro = tf.getoutputproperties();

//設定編碼格式和輸出格式

pro.setproperty(outputkeys.encoding, "utf-8");

pro.setproperty(outputkeys.method, "xml");

tf.setoutputproperties(pro);

//建立資源物件

domsource source = new domsource(doc);

string path = environment.getexternalstoragedirectory().getabsolutepath()

+file.separator+"weapondom.xml";

//獲得輸出物件

streamresult result = new streamresult(new file(path));

//執行dom文件到xml檔案轉換

tf.transform(source, result);

} catch (exception e)

後記:捷文規範

1.本文成長記錄及勘誤表

專案原始碼

日期備註

v0.1--無

2018-10-15

4--安卓網路程式設計之xml總匯篇

2.更多關於我

筆名qq

愛好張風捷特烈

1981462002

zdl1994328

語言我的github

我的csdn

個人**

3.宣告

1 安卓網路程式設計之獲取IP位址

關於ip 1.ip 網際協議位址 internet protocol address 2.是tcp ip協議族中網路層的協議 3.網際網路上的每乙個網路和每一台主機分配乙個邏輯位址,以此來遮蔽實體地址的差異 ipv41.ip協議第四版 2.位數為32位,即32個0,1排列組合形成的不同數值,每個數值...

網路程式設計之理論篇

網路通訊作為網際網路的技術支援,已被廣泛應用在軟體開發中,無論是web,服務端,客戶端還是桌面應用,都是必須掌握的一門技術。在軟體開發層面實現遠端資料交換的程式設計技術。要熟悉網路程式設計,首先需要學習網路協議的相關知識。什麼網路協議呢?網路協議是為網路中進行資料交換定義的規則,以實現按此規範進行傳...

網路程式設計之理論篇

網路通訊作為網際網路的技術支援,已被廣泛應用在軟體開發中,無論是web,服務端,客戶端還是桌面應用,都是必須掌握的一門技術。在軟體開發層面實現遠端資料交換的程式設計技術。複製 要熟悉網路程式設計,首先需要學習網路協議的相關知識。什麼網路協議呢?網路協議是為網路中進行資料交換定義的規則,以實現按此規範...