使用PHP创建SOAP请求 - 如何向XML标记添加属性?

ben*_*njy 6 php xml soap

我试图在我的SOAP调用中生成以下XML:

<CResponse>
    <ID>int</ID>
    <Response Action="Apply">
        <Question ID="$someint">
            <Responses>
                <Response ID="$someotherint" />
                <Response ID="$yetanotherint" />
            </Responses>
        </Question>
    </Response>
</CResponse>
Run Code Online (Sandbox Code Playgroud)

我可以创建大部分调用 - 我终于认识到嵌套数组是我的朋友 - 但我不知道如何将这些ID="$int"Action="Apply"属性添加到各种标签中.我相信这很容易,但我无法理解.

TIA.

JJ.*_*JJ. 13

您应该能够使用以下语法添加属性:

array("foo" => array("_" => "cheese", "bar"=>"moo"));
Run Code Online (Sandbox Code Playgroud)

这应该产生以下XML

<foo bar="moo">cheese</foo>
Run Code Online (Sandbox Code Playgroud)

  • 如果我有一个像这样的XML <foo bar ="moo"> <bar> moo2 </ bar> </ foo>`怎么办? (4认同)

Hen*_*pel 0

我不知道 JJ 建议的(有点奇怪)语法(根据您对问题的重新发布,它似乎不起作用),但您应该能够通过构建您想要的任何方式来塑造您的请求 xml或多或少“手动”使用SoapVar带有XSD_ANYXML编码的类。

有关如何执行此操作的示例,请参阅SoapVar 构造函数文档的此用户评论。

如果您需要构建的 XML 变得更加复杂,请考虑使用 SimpleXML 或 DOMDocument 来组装它,而不是直接编写它。

(我仍然觉得奇怪,应该没有更简单的方法来做到这一点,但到目前为止我还没有找到一种方法。)


编辑:刚刚在这个问题中找到了另一个使用 XSD_ANYXML 编码的示例,要求更简单的方法来做到这一点。不幸的是,到目前为止,没有人想出一种更简单的方法:/