使用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文档中的最高父类元素映射类。