Android解析XML(一)--使用本地资源

使用XML本地资源
1.如果我们采用android自带的Pull解析方法的话,我们可以将xml文件以xml资源的形式存在。即就是在res目录下建立一个xml文件夹,并将文件放在里面。之后我们用getXml方法获取资源(返回类型为XmlResourceParser)。接下来,我们就可以进行解析啦!
示例代码:

int counter=0;
    StringBuilder sb=new StringBuilder("");
    Resources r=getResources();
    XmlResourceParser xrp=r.getXml(R.xml.test);
    try{
     while(xrp.getEventType()!=XmlResourceParser.END_DOCUMENT){
      if(xrp.getEventType()==XmlResourceParser.START_TAG){
       String name=xrp.getName();
       if(name.equals("customer")){
        counter++;
        sb.append("第"+counter+"条客户消息:");
        sb.append(xrp.getAttributeValue(0)+"\n");
        sb.append(xrp.getAttributeValue(1)+"\n");
        sb.append(xrp.getAttributeValue(2)+"\n");
        sb.append(xrp.getAttributeValue(3)+"\n\n");
       }else if(xrp.getEventType()==XmlResourceParser.END_TAG){
        
       }else if(xrp.getEventType()==XmlResourceParser.TEXT){
        
       }
      }
      xrp.next();
     }
     mTextView.setText(sb);
    }catch(XmlPullParserException e){
     e.printStackTrace();
    }catch(IOException e){
     e.printStackTrace();
    }    
   }});
    }

 


2.如果我们想使用java的SAX来解析XML,我们可以将xml拷贝到项目文件夹下的assets文件夹下,之后调用getAssets()(getResources().getAssets().open("test.xml");)方法来实现。
示例代码:
(1)解析代码

try{
        SAXParserFactory factory=SAXParserFactory.newInstance();
        XMLReader reader=factory.newSAXParser().getXMLReader();
        
        InputStream xml=this.getResources().getAssets().open("test.xml");
        //InputStream result=new FileInputStream(xml);
        PaperDetailHandler myHandler= new PaperDetailHandler();
        reader.setContentHandler(myHandler);//MyContentHandler is up to you
        
        reader.parse(new InputSource(xml));
        Info result=myHandler.getInfo();
        String sample=result.getSample();
        CharSequence charSequence=Html.fromHtml(sample); 
        txt.setText(charSequence);
        }catch(Exception e)
        {
            txt.setText(e.toString());
        }
        
        //setContentView(R.layout.activity_main);
        this.setContentView(txt);

 


(2)其中PaperDetailHandler为DefaultHandler的实现,Info为xml文档中的最高父类元素映射类。

posted @ 2012-09-19 15:43  Jerry Ru  阅读(648)  评论(0)    收藏  举报