您的位置:首页 > 其它

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

2010-05-07 12:32 405 查看
在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("<?", 0), strxml.length()).trim();
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: