仕様自体を含む、そこにあるすべての XML-RPC の例で気づいたことの 1 つは、再帰 (param) 値を使用するスキーマの詳細な例がないことです。これらの図がなければ、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>
私は実装を作成しようとしていますが、すべての可能性と、サーバー側で誰かのスキーマをトラバースするときに何を確認する必要があるかを知る必要があります。仕様の読み方では、配列と構造体を同じようにネストできるように見えますが、それが正しいことを確認したかったのです。ありがとう!