二、J2ME简单的行情软件–得到数据(解析xml)

在J2ME中得到数据

我的项目主要是通过PHP连接ICE得到行情数据并将其转换为XML类型的数据,然后在J2ME中解析XML。

在J2ME中我主要用KXML来解析,主要用到KXML中的KXmlParser.java、XmlPullParser.java、XmlPullParserException.java这三哥类,我自己感觉还是比较简单,J2ME中主要是通过HttpConnection来打开一个连接地址得到数据:

我这里主要写了两个方法来得到数据:

 

/**
  * 主用用来得到数据并设置一些参数
  * @param url         得到数据的URL地址
  */

public static Vector getVectorData(String url){
  InputStream is = null;
  try {

  //实例化HttpConnection类
   mHttpConnection=(HttpConnection) Connector.open(url);

  //设置请求的方法、得到数据的类型
   mHttpConnection.setRequestMethod(HttpConnection.GET);
   mHttpConnection.setRequestProperty(“Content-Type”, “application/xml”);
   mHttpConnection.setRequestProperty(“User-Agent”, “Profile/MIDP-2.0 Configuration/CLDC-1.1”);
   mHttpConnection.setRequestProperty(“Content-Language”, “en-US”);

  //得到响应的状态
   int rc=mHttpConnection.getResponseCode();
   if(rc!=HttpConnection.HTTP_OK){
    mHttpConnection.close();
   }

  //得到数据流
   is=mHttpConnection.openInputStream();
   return Util.getData(is);
  } catch (IOException e) {
   e.printStackTrace();
  }
  return null;
 }

 

 

/**
  * 主要用来解析数据流,将其转换为Vector
  * @param is  数据流
  * @return   返回一个包含了时间,栏目信息列表的一个数组
  */
 public static Vector getData(InputStream is) {
  KXmlParser parser = new KXmlParser();
  try {

   //下面主要是对数据流的操作,并且将它转换为utf-8的编码
   byte[] b = new byte[1024];
   int len = 0;
   ByteArrayOutputStream baos = new ByteArrayOutputStream();
   DataOutputStream dos = new DataOutputStream(baos);
   while ((len = is.read(b)) != -1) {
    dos.write(b, 0, len);
   }
   byte[] data = baos.toByteArray();
   String strxml = new String(data, “utf-8”);
   if(strxml.length()>0){

    // 必须让xml也”    strxml = strxml.substring(strxml.indexOf(“    ByteArrayInputStream bin = new ByteArrayInputStream(strxml.getBytes(“UTF-8”));
    parser.setInput(bin, “UTF-8”);

    //主要用来判断是否为xml的开头,结尾,标签的开头和结尾
    int eventType = parser.getEventType();
    while (eventType != XmlPullParser.END_DOCUMENT) {
     switch (eventType) {

       //标签开头
      case XmlPullParser.START_TAG:

        //得到标签的名称
       strtag = parser.getName();

      if (“fopen”.equals(strtag)) {

          //得到xml的数据
          myData.setFopen(parser.nextText());
       }
       break;

      //在xml中是标签结尾
      case XmlPullParser.END_TAG:

         strtag = parser.getName();
       break;
     }

      //主要用来判断是否为xml的开头,结尾,标签的开头和结尾

     eventType = parser.next();
    }
    return vector;
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return null;
 }

 

 

来源:ms_X0828

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2010年4月6日
下一篇 2010年4月6日

相关推荐