从Android解析XML RPC结果

时间:2011-07-20 06:13:47

标签: android xml xml-rpc

我是否需要将XML结果放入临时本地xml文件中,然后从那里解析?我正试图在http://foxrate.org/使用Foxrate的RPC API来创建一个“简单”的货币转换,而我却试图找出下一步该做什么。我在这里遵循的XML示例很好,有些是我需要的顶部(我认为)。我正在使用code.google中的Android XML RPC库,因此我可以从下面开始。

  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来提取我需要的信息?我是否需要编写一个事件处理程序,如此处所述http://www.anddev.org/web_services_-_an_xml-rpc_client_for_android-t646.html,为此?我发现有大量的信息,但都有不同的解决方案。

来自服务器的响应是这样的:

   <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>

感谢任何方向!

1 个答案:

答案 0 :(得分:1)

试试这个:

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();

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