如何在android中从xml访问大括号内的数据

如何在android中从xml访问大括号内的数据,android,web-services,android-emulator,android-ksoap2,Android,Web Services,Android Emulator,Android Ksoap2,Im使用ksoap webservice访问数据,iam仅在数据不带大括号的情况下获取结果。但是在webservices中,数据在大括号{}中可用,在这种情况下,我无法访问数据,只能得到空数据,看起来是这样的 {“消息”:“需要处理贷款类型。”} 这是一个ksoap webservice输出,现在我如何访问大括号内的值,请任何人帮助我。尝试此示例代码::它可以帮助您:: public class Mywebservice1Activity extends Activity implement

Im使用ksoap webservice访问数据,iam仅在数据不带大括号的情况下获取结果。但是在webservices中,数据在大括号{}中可用,在这种情况下,我无法访问数据,只能得到空数据,看起来是这样的

{“消息”:“需要处理贷款类型。”}


这是一个ksoap webservice输出,现在我如何访问大括号内的值,请任何人帮助我。

尝试此示例代码::它可以帮助您::

public class Mywebservice1Activity extends Activity implements OnClickListener {

EditText edtuname, edtpwd;
Button btnok, btncancel;

private static final String namespace = "http://tempuri.org/";
private static final String address = "http://192.168.1.138/test/Service.asmx";
private static final String method = "login1";
private static final String action = namespace + method;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    edtuname = (EditText) findViewById(R.id.edtname);
    edtpwd = (EditText) findViewById(R.id.edtpwd);

    btnok = (Button) findViewById(R.id.btnok);
    btncancel = (Button) findViewById(R.id.btncancel);

    btnok.setOnClickListener(this);
    btncancel.setOnClickListener(this);

}

@Override
public void onClick(View v) {

    if (v == btnok) {

        String name = edtuname.getText().toString();
        String pass = edtpwd.getText().toString();

        SoapObject request = new SoapObject(namespace, method);
        SoapSerializationEnvelope envelop = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);

        request.addProperty("user", name.toString().trim());
        request.addProperty("pass", pass.toString().trim());

        envelop.setOutputSoapObject(request);
        envelop.dotNet = true;

        HttpTransportSE transport = new HttpTransportSE(address);

        try {
            transport.call(action, envelop);
            Object res = envelop.getResponse();

            Toast.makeText(this, res.toString(), Toast.LENGTH_SHORT).show();

            // txt.setText(res.toString());

        } catch (Exception e) {
            // txt.setText(e.toString());
        }

    }

}
}好的

SoapObject response = (SoapObject)envelope.getResponse();
String rate =  response.getProperty(0).toString();
String pi =  response.getProperty(1).toString();
String apr = response.getProperty(2).toString();
txtbox.setText = rate + " " + pi + " " + apr;

好的。。您的Web服务以Responce的形式返回JSON数据,这样您就可以在代码中解析JSON数据了,我已经给出了一些解析JSON Web服务的基本逻辑

//================================================

    private ArrayList<HashMap<String, String>> MyArray = new ArrayList<HashMap<String,String>>();
    private HashMap<String, String> MyTempHas;

    private JSONObject JSONObj;
    Private SoapObject responce = (SoapObject) envelope.getResponse();
    /* gets our result in JSON String */
    private String ResultObject = responce.getProperty(0).toString();

    if (ResultObject.startsWith("{")) { // if JSON string is an object
        JSONObj = new JSONObject(ResultObject);
        Iterator<String> itr = JSONObj.keys();
        MyTempHas = new HashMap<String, String>();
        while (itr.hasNext()) {
            String Key = (String) itr.next();
            String Value = JSONObj.getString(Key);
            MyTempHas.put(Key, Value);
            // System.out.println(bundleResult.getString(Key));
        }
        MyArray.add(MyTempHas);
    } else if (ResultObject.startsWith("[")) { // if JSON string is an array
        JSONArr = new JSONArray(ResultObject);
        System.out.println("length" + JSONArr.length());
        for (int i = 0; i < JSONArr.length(); i++) {
            JSONObj = (JSONObject) JSONArr.get(i);
        Iterator<String> itr = JSONObj.keys();
            MyTempHas = new HashMap<String, String>();
            while (itr.hasNext()) {
                String Key = (String) itr.next();
                String Value = JSONObj.getString(Key);
                MyTempHas.put(Key, Value);
                // System.out.println(bundleResult.getString(Key));
            }
            MyArray.add(MyTempHas);
        } 
    }
private ArrayList MyArray=new ArrayList();
私有HashMap-MyTempHas;
私有JSONObject JSONObject;
私有SoapObject response=(SoapObject)信封.getResponse();
/*获取JSON字符串中的结果*/
私有字符串ResultObject=response.getProperty(0.toString();
if(ResultObject.startsWith(“{”){//如果JSON字符串是对象
JSONObj=新的JSONObject(ResultObject);
迭代器itr=JSONObj.keys();
MyTempHas=新HashMap();
while(itr.hasNext()){
字符串键=(字符串)itr.next();
字符串值=JSONObj.getString(键);
MyTempHas.put(键、值);
//System.out.println(bundleResult.getString(Key));
}
添加(MyTempHas);
}else if(ResultObject.startsWith(“[”){//如果JSON字符串是数组
JSONArr=新JSONArray(ResultObject);
System.out.println(“length”+JSONArr.length());
for(int i=0;i
//========================================

    private ArrayList<HashMap<String, String>> MyArray = new ArrayList<HashMap<String,String>>();
    private HashMap<String, String> MyTempHas;

    private JSONObject JSONObj;
    Private SoapObject responce = (SoapObject) envelope.getResponse();
    /* gets our result in JSON String */
    private String ResultObject = responce.getProperty(0).toString();

    if (ResultObject.startsWith("{")) { // if JSON string is an object
        JSONObj = new JSONObject(ResultObject);
        Iterator<String> itr = JSONObj.keys();
        MyTempHas = new HashMap<String, String>();
        while (itr.hasNext()) {
            String Key = (String) itr.next();
            String Value = JSONObj.getString(Key);
            MyTempHas.put(Key, Value);
            // System.out.println(bundleResult.getString(Key));
        }
        MyArray.add(MyTempHas);
    } else if (ResultObject.startsWith("[")) { // if JSON string is an array
        JSONArr = new JSONArray(ResultObject);
        System.out.println("length" + JSONArr.length());
        for (int i = 0; i < JSONArr.length(); i++) {
            JSONObj = (JSONObject) JSONArr.get(i);
        Iterator<String> itr = JSONObj.keys();
            MyTempHas = new HashMap<String, String>();
            while (itr.hasNext()) {
                String Key = (String) itr.next();
                String Value = JSONObj.getString(Key);
                MyTempHas.put(Key, Value);
                // System.out.println(bundleResult.getString(Key));
            }
            MyArray.add(MyTempHas);
        } 
    }
在本例中,如果只返回一个对象,那么它将以“{”开头,并将所有atribute保存在Hasmap中,然后添加到ArrayList中。 如果您的response发送多个对象,那么它将以“[”数组开始,然后按照上述逻辑逐个解析对象

然后模拟从存储在ArrayList中的Hasmap获取所有值。 如果您无法从ArrayList中获得价值,请告诉我我将帮助您


我希望这能对你有所帮助。

解释你的问题的更多细节您好,先生,我正在尝试使用ksoap访问android中的.net webservice,我已经成功访问了它,并且得到了一个值。如果.net webservice像这样返回,凌晨4:13,那么我得到的值是4:13,但是如果返回的值是这样的{“30年利率”:4.250,“30年利率”:196.78,“30年4月”:4.375,“QuoteID”:1432,“许可”:“N”},我能够获取大括号内的值…这是我的问题。我可以解析数据,但我的问题是如何访问大括号内的值,如{“30年利率”:4.250,“30年pi”:196.78,“30年4月”:4.375,“QuoteID”:1432,“许可”:“N”}这是一个XML输出,现在我想访问大括号内的值。在Toast打印中会得到响应??先生,如果值在大括号内,那么它不会打印,例如“{“30年利率”:4.250,“30年利率”:196.78,“30年4月”:4.375,“QuoteID”:‌​1432,“许可”:“N”}“我可以使用getproperty(0)获取该值,但是如果该值没有像Android这样的大括号,那么在这里我可以获取值“Android”。。。