java - 从字符串中的 XML 获取数据 - Android

标签 java android xml ksoap2

我正在使用 SOAP 服务来获取门票。我正在发送用户和通行证,并且我正在字符串中获取 xml。为此,我使用 ksoap2。

@Override
protected String doInBackground(String... params) {

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    request.addProperty(USER, params[0]);
    request.addProperty(PASS, params[1]);

    SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    soapEnvelope.bodyOut = request;
    soapEnvelope.setOutputSoapObject(request);

    HttpTransportSE HttpTransport = new HttpTransportSE(URL);
    try {
        HttpTransport.call(SOAP_ACTION, soapEnvelope);
        return soapEnvelope.getResponse().toString();
    } catch (IOException | XmlPullParserException e) {
        e.printStackTrace();
        return null;
    }
}

@Override
    protected void onPostExecute(String XML) {
        super.onPostExecute(XML);
        if (result != null) {
           // Here I need to get data from XML

        }
    }

我的 XML 字符串如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<resp err="0">
<ticket>1234567989</ticket>
</resp>

所以我需要获取错误号和票号。

最佳答案

不要将响应转换为字符串并返回它,而是使用 getProperty() 方法获取所需的属性并将其转换为字符串。我是这样做的:

    String ticket;

    public void getSoap() {

    SoapObject request = new SoapObject(NAMESPACE, METHODNAME);
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true;
    envelope.implicitTypes = false;
    envelope.setOutputSoapObject(request);
    HttpTransportSE httpTransportSe = new HttpTransportSE(URL);
    httpTransportSe.debug = true;
    SoapObject response = null;

    try {
        httpTransportSe.call(SOAPACTION, envelope);
        response = (SoapObject) envelope.getResponse();
        ticket = response.getProperty("ticket").toString();

    } catch (Exception e) {
        e.printStackTrace();
    }

}

从属性获取“err”元素可能需要更多研究,但您可以在获取ticket的地方尝试此操作:

String err = response.getAttribute("err").toString;

希望这对您有所帮助,祝您编码愉快!

关于java - 从字符串中的 XML 获取数据 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28699669/

相关文章:

java - 限制 Flex/BlazeRS 和 Tomcat 之间的 HTTP 请求参数大小?

Java EE NameNotFoundException;

Java 网络 音乐流 UDP 或 TCP

android - 渲染问题,找不到 android.support.v4.widget.Drawerlayout

xml - XElement.Load() 上出现 "undeclared prefix"错误的解决方法

使用模式匹配器的 Java 正则表达式未正确返回?

android - 在 Eclipse 中为 Android 开发 : R. java 未重新生成

java - 使用自定义属性排序数组列表

java - Android 无法阻止来电

python - 解析 xml 文件并将其存储到数据库中