安卓开发 PULL解析xml源文件

     xml解析  我网上查了好久资料  发现关于xml解析有三种方式  sax pull dom   各有优缺   虽然都有例子 但是没有找到一种简单的方法   (真的 只能说 国内的各个论坛的上的博客的帖子 基本都是大家转来转去 都是一样的 没有多少有用的<有用的还是有的>  也可能是我还没找到好的论坛吧)   而且源码找到的基本没有什么用  用不了或是复杂难懂  我是移植不起来       后来找到一个应用用到xml解析 然后我再把里面的相关源码提取出来才成功解析了xml       是用pull方法的   有必要解释下原理  
  pull是边读取文档边解析xml   读取到一个开始标签  如果是开始标签 就读取其相应的内容  读取完成后 又继续读取下一个标签(每次读取到的标签不一定是开始标签)   直到文档结束  

xml文档

<?xml version="1.0" encoding="utf-8"?>
<schools>
  <school name="aaa" url="11111">xxxxx</school>
  <school name="bbb" url="22222">yyyyy</school>
  <school name="ccc" url="33333">zzzzz</school>
</schools>


源码是这样的

private List<Map<String, String>> getData() {
 List<Map<String, String>> list = new ArrayList<Map<String, String>>();
 XmlResourceParser xrp = getResources().getXml(R.xml.schools);//获取xml文档
 try {
     while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {//直到文档结尾

         if (xrp.getEventType() == XmlResourceParser.START_TAG) {//如果读取到开始标签
            
             String tagName = xrp.getName();      // 获取标签的名字
             if (tagName.equals("school")) {      //标签名字为school  
                 
                 Map<String, String> map = new HashMap<String, String>(); //我把数据存放到一个map的list里
                 String name = xrp.getAttributeValue(null, "name");  // 通过属性名来获取属性值
                 map.put("name", name);
                 String url = xrp.getAttributeValue(1);   // 通过属性次序来获取属性值 
                 map.put("url", url);
                 map.put("name", xrp.nextText());     //获取这个标签的内容
                 list.add(map);
             }           
        }
     xrp.next();// 获取解析下一个事件
     }
 } catch (XmlPullParserException e) {
 // TODO Auto-generated catch block

 } catch (IOException e) {
 // TODO Auto-generated catch block

 }


 return list;
 }

 
  
  
  
  

这样就算好了   最后在调用

	List<Map<String, String>>  Schools=getData();
	String  ss=Schools.get(0).get("name");//列表中第一个

基本就是这样了  


但是其实我的xml是这样的 

<?xml version="1.0" encoding="utf-8"?>
<schools>
  <school>
        <name>aaa</name>
        <url>11111</url>
        <description>xxxxx</description>
  </school>
  <school>
        <name>bbb</name>
        <url>22222</url>
        <description>yyyyy</description>
  </school>  <school>
        <name>ccc</name>
        <url>22222</url>
        <description>zzzzz</description>
  </school>

</schools>

 
 我又费了一点功夫才弄好的   读者自己试试看呗~~ 

你可能感兴趣的:(xml,安卓开发,pull)