如何解决xml解析+ Java ME
| 我正在编辑我的问题,以清楚地了解字符串名称resfile_name和结果 我想进行xml解析。在这里我将一些参数传递给url ane,它以xml格式给我响应,我以字符串名称结果将其接收,现在我想解析该字符串(xml数据)。 我正在使用以下代码:- SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
vector = new Vector();
vector.addElement(new KeyPair(\"ParentID\",\"10000186\"));
String result = Constants.callSoap(\"GetChildList\",vector);
InputStream is = new ByteArrayInputStream(result.getBytes(\"UTF-8\"));
Reader reader = new InputStreamReader(in);
XmlParser parser = new XmlParser(reader);
ParseEvent pe = null;
Reader reader = new InputStreamReader(in);
XmlParser parser = new XmlParser(reader);
ParseEvent pe = null;
parser.skip();
parser.read(Xml.START_TAG,null,\"GetChildListResult\");
parser.skip();
parser.read(Xml.START_TAG,\"CustomChildList\");
boolean trucking = true;
boolean first = true;
while (trucking) {
pe = parser.read();
if (pe.getType() == Xml.START_TAG) {
String name = pe.getName();
System.out.println(\"nAME==\"+name);
if (name.equals(\"ChildID\")) {
String title,link,description;
title = link = description = null;
while ((pe.getType() != Xml.END_TAG) ||
(pe.getName().equals(name) == false)) {
pe = parser.read();
if (pe.getType() == Xml.START_TAG &&
pe.getName().equals(\"ChildName\")) {
pe = parser.read();
title = pe.getText();
}
else if (pe.getType() == Xml.START_TAG &&
pe.getName().equals(\"IMEINumber\")) {
pe = parser.read();
link = pe.getText();
}
else if (pe.getType() == Xml.START_TAG &&
pe.getName().equals(\"ChildStatus\")) {
pe = parser.read();
description = pe.getText();
}
}
}
else {
while ((pe.getType() != Xml.END_TAG) ||
(pe.getName().equals(name) == false))
pe = parser.read();
}
}
if (pe.getType() == Xml.END_TAG &&
pe.getName().equals(\"GetChildListResult\"))
trucking = false;
}
Constants.callSoap(\“ GetChildList \”,vector);在具有代码的常量中调用callsoap方法:
public static String callSoap(String method,Vector vector) {
String result = null;
Constants.log(\"callSoap\");
try {
SoapObject request = new SoapObject(NAMESPACE,method);
if (vector != null) {
for (int i = 0; i < vector.size(); i++) {
KeyPair keyPair = (KeyPair) vector.elementAt(i);
request.addProperty(keyPair.getKey(),keyPair.getValue());
}
}
Constants.log(\"callSoap2\");
Element[] header = new Element[1];
header[0] = new Element().createElement(NAMESPACE,\"AuthSoapHd\");
Element username = new Element().createElement(NAMESPACE,\"strUserName\");
username.addChild(Node.TEXT,\"*****\");
header[0].addChild(Node.ELEMENT,username);
Element password = new Element().createElement(NAMESPACE,\"strPassword\");
password.addChild(Node.TEXT,\"******\");
header[0].addChild(Node.ELEMENT,password);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.headerOut = header;
envelope.setOutputSoapObject(request);
Constants.log(\"callSoap3\");
HttpTransport transport = new HttpTransport(\"http://***.***.*.***/ChildTrackerService/ChildTrackerService.asmx?wsdl\");
//log(\"Log:transport\");
transport.setXmlVersionTag(\"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\");
//log(\"Log:transport1\");
try {
transport.call(\"http://tempuri.org/\" + method,envelope);
//log(\"Log:transport:call\");
result = (envelope.getResponse()).toString();
} catch (Exception e) {
System.out.println(\"exception of IP==\" + e);
}
} catch (Exception e) {
log(\"Exception CallSoap:\" + e.toString());
}
return result;
}
And the class keypair contain:-
public KeyPair(String key,String value) {
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public String getValue() {
return value;
}
The string reult has --
result==anyType{CustomChildList=anyType{ChildID=452; ChildName=Local; IMEINumber=958694; ChildStatus=Free; ExpiryDate=2011-05-26T16:22:21.29; RemainigDays=1; SOS=1; }; CustomChildList=anyType{ChildID=502; ChildName=testing; IMEINumber=123456; ChildStatus=anyType{}; ExpiryDate=null; RemainigDays=0; SOS=1; }; CustomChildList=anyType{ChildID=523; ChildName=abc; IMEINumber=124124; ChildStatus=anyType{}; ExpiryDate=null; RemainigDays=0; SOS=1; }; }
实际的响应是这样的:
452
本地
958694
自由
2011-05-26T16:22:21.29
1个
1个
502
测试
123456
0
1个
523
abc
124124
0
1个
解决方法
以下代码将在类路径中使用传入参数的名称查找资源,并且您正在传递整个XML,因此NPE很明显。
this.getClass().getResourceAsStream(resfile_name)
最好从URL获取inputStream,如下面的虚线所示,然后继续
HttpConnection hc = null;
try {
hc = (HttpConnection)Connector.open(url);
parse(hc.openInputStream());
看到
在java-me中解析XML
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。