Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Android解析XML RPC结果_Android_Xml_Xml Rpc - Fatal编程技术网

从Android解析XML RPC结果

从Android解析XML RPC结果,android,xml,xml-rpc,Android,Xml,Xml Rpc,我是否需要将XML结果放入一个临时本地XML文件中,然后从那里进行解析?我正在尝试使用Foxrate的RPC API创建一个“简单”的货币转换,我一直在努力找出下一步该做什么。我在这里遵循的XML示例很好,有些已经超出了我的需要(我认为)。我正在使用code.google中的AndroidXMLRPC库,因此我可以从以下内容开始 uri = URI.create("http://foxrate.org/rpc/"); client = new XMLRPCClient(uri);

我是否需要将XML结果放入一个临时本地XML文件中,然后从那里进行解析?我正在尝试使用Foxrate的RPC API创建一个“简单”的货币转换,我一直在努力找出下一步该做什么。我在这里遵循的XML示例很好,有些已经超出了我的需要(我认为)。我正在使用code.google中的AndroidXMLRPC库,因此我可以从以下内容开始

  uri = URI.create("http://foxrate.org/rpc/");
    client = new XMLRPCClient(uri);
    Object FoxResult = null;

    try {
        FoxResult = client.call("foxrate.currencyConvert", sourceCurrency, targetCurrency, conversionValue);
        Log.d("XMLRPC Test", "result conversion" );                 
    } catch (XMLRPCException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Log.d("XMLRPC Test", "Error", e);
    }
那又怎么样?在过去的几天里,我一直在试图找出如何将结果结构分离,并将它们放入我可以使用的变量中。我是否使用DOM或SAX提取所需的信息?我是否需要为此编写这里提到的事件处理程序?我发现有很多信息,但都有不同的解决方案

来自服务器的响应如下所示:

   <params>
    <param>
        <value>

            <struct>

                <member>
                    <name>flerror</name>
                    <value>
                        <int>0</int>
                    </value>
                </member>

                <member>
                    <name>amount</name>
                    <value>
                        <double>50.36</double>
                    </value>
                </member>

                <member>
                    <name>message</name>
                    <value>
                        <string>"2/9/2007"</string>
                    </value>
                </member>

            </struct>
        </value>

    </param>
</params>

弗莱罗
0
数量
50.36
消息
"2/9/2007"
谢谢你的指点

试试这个:

Map<String, Object> FoxResult = client.call("foxrate.currencyConvert", sourceCurrency, targetCurrency, conversionValue);
int flerror = Integer.valueOf(FoxResult.get("flerror").toString());
double amount = Double.valueOf(FoxResult.get("amount").toString());
String message = FoxResult.get("message").toString();
Map FoxResult=client.call(“foxrate.currencyConvert”、sourceCurrency、targetCurrency、conversionValue);
int-flerror=Integer.valueOf(FoxResult.get(“flerror”).toString());
double amount=double.valueOf(FoxResult.get(“amount”).toString());
String message=FoxResult.get(“message”).toString();

您需要对异常和缺少的值进行适当的检查,但是对于
struct
类型,它会返回一个映射。

非常感谢,当我回到我的编码框时,我会尝试一下!