XML文件的读取(XmlParserDemo)

 

    核心代码如下:

 

btn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

XmlPullParser parser = resources.getXml(R.xml.people);

String msg = "";

try {

while(parser.next()!=XmlPullParser.END_DOCUMENT){

String people = parser.getName();

String name = null;

String age = null;

String height =null;

if((people!=null)&&people.equals("person")){

int count = parser.getAttributeCount();

for(int i=0;i<count;i++){

String attrName = parser.getAttributeName(i);

String attrValue = parser.getAttributeValue(i);

if(attrName!=null&&"name".equals(attrName)){

name = attrValue;

}

if(attrName!=null&&"age".equals(attrName)){

age = attrValue;

}

if(attrName!=null&&"height".equals(attrName)){

height = attrValue;

}

}

 

if((name!=null)&&(age!=null)&&(height!=null)){

msg+="姓名:"+name+",年龄:"+age+",身高:"+height+"\n";

Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();

display.setText(msg);

}

 

}

}

} catch (XmlPullParserException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

});

 

    XmlPullParserXML事件类型有如下几种:

    1.START_TAG->>读取到标签开始标志

    2.END_TAG->>读取到标签结束标志

    3.TEXT->>读取文本内容

    4.END_DOCUMENT->>文档末尾

     

     

    解析XML文件的方式 有如下几种

    SAXSimple API for XML

    采用的是事件驱动,也就是它解析XML文档并需要解析完整个文档,在解析过程中,它会判断解析出的当前字符是否符合XML中的某部分,如果符合则触发事件,如果不符合则触发相应的回调函数。此回调函数封装在ContentHandler接口中。。因为ContentHandler被实现后会被强制实现很多无用方法,故不用此接口,我们继承DefaultHandler类,因为其实现了ContentHandler中一部分我们需要的方法,省去了一些我们无用的方法哦。所以选择用这个。

    缺点是,解析过后不能倒退回来查看数据 哦。

    DOM:Document Object Model

    此种解析方式是把已知的XML文档全部载入到内存中,并将其存储为dom树,根据dom结点与子结点之间的关系来解析文件,如果文件过大的话,解析会很耗时而且很耗资源的。

    PULL.

     

     

     

你可能感兴趣的:(职场,休闲,XML文件解析)