我正在编辑我的问题,以明确关于字符串名称结果的想法,我想做xml parsing.where,我正在传递一些参数给url,它给我一些xml格式的响应,我把它放在字符串名称结果中,现在我想解析那个字符串(xml parsing.where)。我正在使用下面的代码:
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, null, "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;
}向量(“GetChildList”,Constants.callSoap);调用常量中的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 Local 958694 Free 2011-05-26T16:22:21.29 1 1 502 testing 123456 0 1 523 abc 124124 0 1发布于 2011-05-25 17:31:59
下面的代码将在类路径中查找带有传入参数的名称的资源,并且传递的是整个XML,因此NPE是显而易见的。
this.getClass().getResourceAsStream(resfile_name)您最好从URL获取inputStream,如下面的片段所示,然后继续前进。
HttpConnection hc = null;
try {
hc = (HttpConnection)Connector.open(url);
parse(hc.openInputStream());请参阅
https://stackoverflow.com/questions/6121914
复制相似问题