2013/3/11更新
讀取root的值(沒有子節點,只有root帶值):
root.getElementsByTagName("root的tag值").item(0).getFirstChild().getNodeValue();
Survey:
IBM - 在 Android 上使用 XML
YSL - 在 Android 平台上解析 XML 資料並轉成 DOM
MyAndroid - 取得XML節點資料
disanji.netAndroid XML解析学习——创建XML
===========================================
這篇文章我早該在一年多(碩畢)時就秀出來了,遲遲不秀一方面還在整理資料沒整理完
現在在android開發的路上相信不久的將來還會用到這個技巧,因此貼出來討論,以後要查詢也較方便。
假設我有一份xml文件長這樣:
以文件內容來說儲存的資訊很少階層也很少,也不算是一份正規的xml(沒有schema)
但撰寫格式只要正確,都一樣撈的出資料來哪怕你是用SAX或是DOM的技術去Parse
假設有一文件路徑
File f = new File("/sdcard/123xml");
if (f.exists()) {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
System.out.println(dbf.getClass().getName());
//利用上面的dbf去生成DocumentBuilder
DocumentBuilder db = dbf.newDocumentBuilder();
//將xml用DocumentBuilder去parse並丟到一 public Document doc;變數中
doc = db.parse(new File("/sdcard/123.xml"));//裡面應該可以直接塞個f給它就好
//然後底下就可以依照指令去parse並把parse到的資料丟到變數儲存。
//設定樹根
nl = doc.getElementsByTagName("right");
int len = nl.getLength();
System.out.println(len);
for (int i = 0; i < = len; i++) {
Element eltPer = (Element) nl.item(i);
Node eltread = eltPer.getElementsByTagName("read").item(0);
Node eltwrite = eltPer.getElementsByTagName("write").item(0);
Node eltcname = eltPer.getElementsByTagName("c_name").item(0);
Node eltkey = eltPer.getElementsByTagName("key-value").item(0);
//底下parse出來的read跟write是String,若要變成數字記得轉型
read = eltread.getFirstChild().getNodeValue();
write = eltwrite.getFirstChild().getNodeValue();
key_value = eltkey.getFirstChild().getNodeValue();
c_name = eltcname.getFirstChild().getNodeValue();
}
}
//xml文件回寫 最後面的kread是一開始宣告"private int kread;" int的型態做完kread--之後就可以回寫了
doc.getChildNodes().item(0).getChildNodes().item(1).getChildNodes().item(2).setTextContent(kread);
沒有留言:
張貼留言