在 j2me 使用kxml2解析xml

http://lifuping-2008.blog.163.com/blog/static/85869990200911973011318/


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 }

你可能感兴趣的:(在 j2me 使用kxml2解析xml)