在所有 XML-RPC 示例(包括规范本身)中,我注意到的一件事是没有使用递归(参数)值的模式的详细示例。如果没有这些插图,很难理解在 XML-RPC 中实际上应该有什么可能,我想知道是否有人可以帮助我更好地处理它。
规范说:
<struct> 可以是递归的,任何 <value> 都可以包含 <struct> 或任何其他类型,包括 <array>,如下所述。
<arrays> 可以是递归的,任何值都可以包含 <array> 或任何其他类型,包括上述的 <struct>。
这是否意味着执行以下操作是完全合法的:
<?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>
是否也可以这样做:
<?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>
我正在尝试编写一个实现,我需要知道所有的可能性,以及在服务器端遍历某人的模式时要检查的内容。根据规范的读取方式,您似乎可以互换嵌套数组和结构,但我想验证这是真的。谢谢!