瞭解Android資源(下)

處理任意的XML文件

自定義的xml文件放置在res/xml/下,可以通過R.xml.file_name來獲取一個XMLResourceParser對象。下面是xml文件的例子:

<root name="tom"> <-- 也可以是<root>,本次採用帶參數的方式作爲實驗 --> 
    <leaf>Hello from an element test.</leaf>
    <leaf>Hello World !</leaf>
    <corners radius="13dp"/>
</root>

通過java code對xml文件進行逐層解析,代碼如下:

try{  //防止在解析過程中,因xml文件書寫或解析分析不匹配等原因造成的異常
   XmlPullParser xpp = getResources().getXml(R.xml.rt_test);  //獲取XML資源的對象
            
    int eventType = xpp.next();  //相當於xpp.next(); int eventType = xpp.getEventType(),而next()直接返回類型
    while(eventType != XmlPullParser.END_DOCUMENT){  //根據類型不同進行相應處理
        switch(eventType){ 
        case XmlPullParser.START_DOCUMENT
            Log.d("xml","***************start****************"); 
            break; 
        case XmlPullParser.START_TAG
            int count = xpp.getAttributeCount(); 
            Log.d("xml","start tap: " + xpp.getName() + " attribute number " + count); 
            for(int i = 0 ; i < count ; i ++){ //此處處理<xxxx yy=zz ….>中yy=zz的參數部分,要注意xml是允許這樣編寫,除非確定自定義的XML的schema中不純正此方式
                Log.d("xml","     Attribute " + i +  " : " + xpp.getAttributeName(i) + " = " + xpp.getAttributeValue(i)); 
            } 
            break; 
        case XmlPullParser.END_TAG
            Log.d("xml","end tap: " + xpp.getName()); 
            break; 
        case XmlPullParser.TEXT
            Log.d("xml","  text: " + xpp.getText()); 
            break; 
        default: 
            Log.d("xml","eventType = " + eventType); 
            break; 
  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章