二、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;
}
我的项目主要是通过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;
}
相关文章推荐
- 简单东西-jQuery解析xml数据
- Android笔记----对服务器XML以及JSON数据的简单解析
- 四、J2ME简单的行情软件--RMS
- JQuery解析XML数据的几个简单实例
- KXML1.21(STABLE)解析XML数据范例(J2ME客户端)
- python-21-如何读写json数据?如何解析简单的xml文档?
- GDataXMLNode解析xml数据的简单应用
- 一、J2ME简单的行情软件--简介
- Android XML数据解析简单示例
- Jquery Ajax解析XML数据(同步及异步调用)简单实例
- 有关TinyXML使用的简单总结:来解析XML数据
- 简单使用SAXReader解析xml数据
- 一个解析XML数据的简单Demo(以KissXml为例)
- 无需繁琐的解析XML,cocos2d-x 3.x中最简单方便粗暴有效的数据方法-plist
- 解析XML字符串,得到各个节点数据
- 解析xml数据的简单demo
- DOM4J学习笔记 --- Java简单解析XML数据
- Kissxml 解析 XML数据的简单Demo
- Android - 使用XmlPullParser解析从服务器得到的Xml数据
- L2十档行情API接口(十档委托、买卖队列、逐笔成交)web或软件应用xml数据接口