【问题标题】:PHP: Returning XML in SOAP function callPHP:在 SOAP 函数调用中返回 XML
【发布时间】:2011-04-02 01:07:23
【问题描述】:

我想在调用函数时在 SOAP 中返回以下 XML,而不仅仅是一个字符串。有许多不同的函数将返回以这种方式格式化的 xml,有没有一种方法可以定义函数返回的内容?喜欢制作我自己的数据类型?

<meta>
    <supplier>Amazon.com</supplier>
    <datetime>2010/08/21 14:32:40</datetime>
</meta>
<results>
    <result>
        <manufacturer>Intel</manufacturer>
        <itemno>8236476234</itemno>
        <prices>
            <price>
                <quantity>10</quantity>
                <cost>$1.20</cost>
            </price>
            <price>
                <quantity>100</quantity>
                <cost>$0.80</cost>
            </price>
        </prices>
    </result>
    <result> ... </result>
</results>

【问题讨论】:

  • XML 不是数据类型。它是一种文档格式。当您输出 XML 文档时,它只是一个字符串。您可以返回 SimpleXMLElement 对象,但这不是 XML。这是一个复杂的数据结构(许多用于相同目的的数据结构之一),它对 XML 进行建模并提供用于操作它的接口。
  • 为什么要从 SOAP 调用返回 XML?如果您设计具有所需结构的类,PHP 可以从 SOAP 调用中生成对象。无需处理 XML。

标签: php xml arrays soap


【解决方案1】:

最好的方法是将结果放入array,然后将其转换为XML。这是一个现成的脚本:

http://rssphp.net/examples/convert_array_to_xml/

它将几乎任何类型的关联数组转换为完整格式的 XML。

【讨论】:

  • XML 不能像这样转换为简单的关联数组,因为有效的 XML 可以具有元素属性。操作 XML 文档的最佳方法是使用 DOM 或 SAX 之类的东西,它们是经过验证的真正解决方案。但如果您的目标只是存储/传输 XML 数据,那么 XML 格式本身已经是一种完全可行且标准化的序列化格式。将其转换为其他数据结构没有任何好处。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-19
相关资源
最近更新 更多