使用kxml解析xml

使用kxml解析xml
最近工作重点不在于网站了,而是转到了新的手机地图组.第一样任务就是看懂手机地图1.1的代码,包括网络连接,ui包,事件交互,地图展示,jsr175,j2mepolish等等!
很久没有这么辛苦的学习了,另外,最近留了胡子。
接下来,把刚刚学习的解析xml的代码放在这里备忘。
 1  package  study;
 2 
 3  import  java.io.StringReader;
 4 
 5  import  org.kxml2.io.KXmlParser;
 6  import  org.xmlpull.v1.XmlPullParser;
 7 
 8  /**
 9   * 2008-4-16下午02:29:40
10   * 
11   *  @author  zhanghongzhi<br>
12   *         email:[email protected]<br>
13   *         desc:用来学习使用kxml来解析xml<br>
14   *         书上讲解说,kxml是基于事件模型,按着下边的逻辑来读取标记,start_document-start_tag-text-end_tag-end_document<br>
15   * 
16    */
17 
18  public   class  ReadXmlByKXML {
19 
20       public   static   void  main(String[] args)  throws  Exception {
21          XmlPullParser parser  =   new  KXmlParser();
22          String sample  =   " <question text='Is it round?'>\n "
23                   +   "  <question text='Is it bright?'>\n "
24                   +   "   <answer>It is the Sun!</answer>\n "
25                   +   "   <answer>It is a ball!</answer>\n "   +   "  </question>\n "
26                   +   "  <answer>I do not know!</answer>\n "   +   " </question>\n " ;
27          System.out.println( " -----------待分析的内容------------ " );
28          System.out.println(sample);
29          System.out.println( " --------------------------------- " );
30          parser.setInput( new  StringReader(sample));
31           //  获取事件类型
32           int  eventType  =  parser.getEventType();
33           //  如果不是整个文档的结尾,那么就读取,这样子就达到遍历整个文档的目的
34           while  (eventType  !=  XmlPullParser.END_DOCUMENT) {
35               //  访问文档根节点
36               if  (eventType  ==  XmlPullParser.START_DOCUMENT) {
37                  System.out.println( " 当前节点的名称: "   +  parser.getName());
38                  System.out.println( " 当前节点下的属性: " );
39                   int  attrCount  =  parser.getAttributeCount();
40                   for  ( int  i  =   0 ; i  <  attrCount; i ++ ) {
41                      System.out.println(parser.getAttributeName(i));
42                  }
43              }  else   if  (eventType  ==  XmlPullParser.START_TAG) {
44                  System.out
45                          .println( " ---------start tag------------------------------ " );
46                  System.out.println( " 当前节点的名称: "   +  parser.getName());
47                  System.out.println( " 当前节点下的属性: " );
48                   int  attrCount  =  parser.getAttributeCount();
49                   for  ( int  i  =   0 ; i  <  attrCount; i ++ ) {
50                      System.out.println(parser.getAttributeName(i)  +   " : "
51                               +  parser.getAttributeValue(i));
52                  }
53                   //  这里可以根据不同的 节点名称来作出不同的反应,比如text需要单独处理什么
54 
55              }  else   if  (eventType  ==  XmlPullParser.TEXT) {
56                  System.out.println( " ---------text tag--------- " );
57                   //  已经取不到值了
58                  System.out.println( " 本text属于: "   +  parser.getName());
59                  System.out.println(parser.getText());
60              }  else   if  (eventType  ==  XmlPullParser.END_TAG) {
61                  System.out.println( " ---------end tag--------- " );
62                  System.out.println( " 当前节点的名称 "   +  parser.getName());
63                   //  可以在这这里把本tag的内容处理掉,比如类似将其放到某个容器中
64              }
65              eventType  =  parser.next();
66          }
67      }
68  }


你可能感兴趣的:(使用kxml解析xml)