Chinaunix首页 | 论坛 | 博客
  • 博客访问: 468029
  • 博文数量: 155
  • 博客积分: 2954
  • 博客等级: 少校
  • 技术积分: 1000
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-12 22:00
文章分类

全部博文(155)

文章存档

2014年(2)

2013年(5)

2012年(10)

2011年(33)

2010年(105)

我的朋友

分类: Java

2010-04-27 12:01:11

最近开始接触J2ME项目,纯粹是自个儿瞎摸索。 恰巧碰到解析xml的问题,哈哈··在android项目中就已经为解析XML 大大的折腾了一番,如今在J2ME平台上应该要轻车熟路了吧。

J2ME 的medlit 中没有提供 关于dom、xml的包。只能单独的引进其他包。 经过一番思量饿测试,发觉kxml2不错,在此总结总结,也分享一下。

kxml2-min-2.3.0 下载地址:
kxml2-src-2.3.0.zip 下载地址:

mypoint.xml 内容如下:

  1. <longitude>116.41006longitude>
  2. <latitude>39.92718latitude>

TestXml.java 源代码如下:

  1. /**
  2. * 文件名:TestXml.java
  3. *
  4. * 版本信息:
  5. * 日期:2009-11-12
  6. * Copyright xxx Corporation 2009
  7. * 版权所有
  8. *
  9. */
  10. package com.xxx.util;
  11. import java.io.ByteArrayInputStream;
  12. import java.io.DataInputStream;
  13. import java.io.IOException;
  14. import java.io.InputStream;
  15. import java.io.InputStreamReader;
  16. import org.kxml2.io.KXmlParser;
  17. /**
  18. *
  19. * 项目名称:Basic7.0
  20. * 类名称:TestXml
  21. * 类描述:测试 xml 文件的读取类
  22. * 创建人:Defonds
  23. * 创建时间:2009-11-12 下午01:08:39
  24. * 修改人:Defonds
  25. * 修改时间:2009-11-12 下午01:08:39
  26. * 修改备注:
  27. * @version
  28. *
  29. */
  30. public class TestXml
  31. {
  32.     private String longitude = "longitude";
  33.     private String latitude = "latitude";
  34.     private String key = null;
  35.     /**
  36.      * main(这里用一句话描述这个方法的作用)
  37.      * TODO(这里描述这个方法适用条件 – 可选)
  38.      * TODO(这里描述这个方法的执行流程 – 可选)
  39.      * TODO(这里描述这个方法的使用方法 – 可选)
  40.      * TODO(这里描述这个方法的注意事项 – 可选)
  41.      * @param   name
  42.      * @param  @return    设定文件
  43.      * @return String    DOM对象
  44.      * @throws IOException
  45.      * @Exception 异常对象
  46.      * @since CodingExample Ver(编码范例查看) 1.1
  47.      */
  48.     public static void main(String[] args) throws IOException
  49.     {
  50.         TestXml test = new TestXml();
  51.         String xml = test.getXml("mypoint.xml");
  52.         test.parseXml(xml);
  53.     }
  54.    
  55.     /**
  56.      * 根据指定文件名返回文件内容
  57.      * @throws IOException
  58.      */
  59.     private String getXml(String fileName) throws IOException
  60.     {
  61.         String str = null;
  62.         InputStream is = getClass().getResourceAsStream(fileName);
  63.         InputStream is2 = getClass().getResourceAsStream(fileName);
  64.         DataInputStream dis = new DataInputStream(is);
  65.         DataInputStream dis2 = new DataInputStream(is2);
  66.         int xmlLength = 0;
  67.         while(dis.read() >= 0)
  68.         {
  69.             xmlLength ++;
  70.         }
  71.         byte[] b = new byte[xmlLength];
  72.         dis2.read(b);
  73.         str = new String(b);
  74.         return str;
  75.     }
  76.    
  77.     /**
  78.      * 解析xml
  79.      */
  80.     private void parseXml(String xml)
  81.     {
  82.         ByteArrayInputStream bytes = new ByteArrayInputStream(xml.getBytes());
  83.         try
  84.         {
  85.             InputStreamReader reader = new InputStreamReader(bytes);
  86.             KXmlParser parser = new KXmlParser();
  87.             boolean keepParsing = true;
  88.             parser.setInput(reader);
  89.             while (keepParsing)
  90.             {
  91.                 int type = parser.next();
  92.                 switch(type)
  93.                 {
  94.                 case KXmlParser.START_DOCUMENT:
  95.                     System.out.println("起始节点:" + parser.getName());
  96.                     break;
  97.                 case KXmlParser.START_TAG:
  98.                     startElement(parser);
  99.                     break;
  100.                 case KXmlParser.END_TAG:
  101.                     //endElement(parser);
  102.                     break;
  103.                 case KXmlParser.TEXT:
  104.                     characters(parser);
  105.                     break;
  106.                 case KXmlParser.END_DOCUMENT:
  107.                     keepParsing = false;
  108.                     break;
  109.                 }
  110.             }
  111.         } catch (Exception e){}
  112.        
  113.     }
  114.    
  115.     public void startElement(KXmlParser parser) throws Exception
  116.     {
  117.         String xmlName = parser.getName();
  118.         //System.out.println("startElement : " + xmlName);
  119.         this.key = xmlName;
  120.         //System.out.println("当前key:" + key);
  121.     }
  122.    
  123.     public void endElement(KXmlParser parser)
  124.     {
  125.         //String xmlName = parser.getName();
  126.         //System.out.println("endElement : " + xmlName);
  127.     }
  128.    
  129.     public void characters(KXmlParser parser)
  130.     {
  131.         String xmlText = parser.getText();
  132.         System.out.println(key + "->" + xmlText);
  133.        
  134.         if (key.equals(longitude))
  135.         {
  136.             System.out.println(xmlText);
  137.         }
  138.         else if(key.equals(latitude))
  139.         {
  140.             System.out.println(xmlText);
  141.         }
  142.         this.key = null;
  143.     }
  144. }
阅读(1028) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~