最近工作重点不在于网站了,而是转到了新的手机地图组.第一样任务就是看懂手机地图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:lanfanss@126.com<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 }
	posted on 2008-04-16 15:33 
张氏兄弟 阅读(3445) 
评论(11)  编辑  收藏  所属分类: 
51ditu.com