Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
了解XML-RPC参数的可能性,尤其是值的递归_Xml_Arrays_Xml Rpc_Struct - Fatal编程技术网

了解XML-RPC参数的可能性,尤其是值的递归

了解XML-RPC参数的可能性,尤其是值的递归,xml,arrays,xml-rpc,struct,Xml,Arrays,Xml Rpc,Struct,我注意到,所有的XML-RPC示例,包括规范本身,都没有使用递归(param)值的模式的详细示例。如果没有这些说明,很难理解XML-RPC中到底应该有什么功能,我想知道是否有人可以帮助我更好地处理它 说明书上说: s可以是递归的,任何 可能包含一个或任何 其他类型,包括, 如下所述 s可以是递归的,任何值 可能包含一个或任何其他 类型,包括所描述的 上面 这是否意味着这样做完全合法: <?xml version="1.0"?> <methodCall>

我注意到,所有的XML-RPC示例,包括规范本身,都没有使用递归(param)值的模式的详细示例。如果没有这些说明,很难理解XML-RPC中到底应该有什么功能,我想知道是否有人可以帮助我更好地处理它

说明书上说:

s可以是递归的,任何 可能包含一个或任何 其他类型,包括, 如下所述

s可以是递归的,任何值 可能包含一个或任何其他 类型,包括所描述的 上面

这是否意味着这样做完全合法:

<?xml version="1.0"?>
<methodCall>
    <methodName>examples.getStateName</methodName>
    <params>
        <param>
            <value>
                <struct>
                    <member>
                        <name>lowerBound</name>
                        <value>
                            <struct>
                                <member>
                                    <name>lowerBound</name>
                                    <value><i4>18</i4></value>
                                </member>
                                <member>
                                    <name>upperBound</name>
                                    <value><i4>139</i4></value>
                                </member>
                            </struct>
                        </value>
                    </member>
                    <member>
                        <name>upperBound</name>
                        <value><i4>139</i4></value>
                    </member>
                </struct>
            </value>
        </param>
    </params>
</methodCall>

示例.getStateName
下界
下界
18
上限
139
上限
139
是否也可以这样做:

<?xml version="1.0"?>
<methodCall>
    <methodName>examples.getStateName</methodName>
    <params>
        <param>
            <value>
                <array>
                    <data>
                        <value><i4>12</i4></value>
                        <value>
                            <struct>
                                <member>
                                    <name>lowerBound</name>
                                    <value>
                                        <struct>
                                            <member>
                                                <name>lowerBound</name>
                                                <value><i4>18</i4></value>
                                            </member>
                                            <member>
                                                <name>upperBound</name>
                                                <value><i4>139</i4></value>
                                            </member>
                                        </struct>
                                    </value>
                                </member>
                                <member>
                                    <name>upperBound</name>
                                    <value><i4>139</i4></value>
                                </member>
                            </struct>
                        </value>
                        <value><boolean>0</boolean></value>
                        <value><i4>-31</i4></value>
                    </data>
                </array>
            </value>
        </param>
    </params>
</methodCall>

示例.getStateName
12
下界
下界
18
上限
139
上限
139
0
-31

我正在尝试编写一个实现,我需要知道所有的可能性,以及在服务器端遍历某人的模式时要检查什么。按照规范的读取方式,似乎可以互换嵌套数组和结构,但我想验证这一点。谢谢

是的,我不明白为什么不。我跟着戴夫·怀纳的 当时制定了该协议,并且 设计并实现了一个集群计算解决方案 (在分子序列数据库中搜索)使用 用于通信的XML-RPC协议。它没有使用复杂的 结构,但例如数组中的项可以是3个
(原语、数组、结构)。

绝对正确。我维护一个XML-RPC的Perl实现,处理数据的任意嵌套(与其说是递归,不如说是嵌套)相当简单

当您提到您正在开发一个自己的实现时(尽管您确实应该看看您的语言是否已经有了一个实现——最好是为一个已建立项目的持续开发和维护做出贡献),最近我遇到了一个关于嵌套和实实在在的问题,您可能需要记住的递归:假设您的语言支持引用,请注意数据结构中没有任何循环引用。我刚刚发布了Perl实现()的新版本,它修复了数组或结构包含循环引用时的无限递归错误