需要一个正则表达式来删除SoapClient :: __ doRequest中不需要的数据

时间:2017-02-03 16:41:34

标签: php regex xml

我使用的Web服务正在返回打包到MIME MultiPart消息中的单个消息(所以我理解它)。 因此,不仅仅是PHP SOAP可以快乐处理的XML,而是我得到了

  

SoapFault异常:[客户端]看起来我们没有......中的XML文档。

因为XML之前和之后有额外的数据。

这是执行__getLastResponse()时返回的内容(注意:uuid更改):

--uuid:80805a48-8715-46db-93f0-781f9ba28317+id=786
Content-ID: <http://tempuri.org/0>
Content-Transfer-Encoding: 8bit
Content-Type: application/xop+xml;charset=utf-8;type="text/xml"

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
....
....
</s:Envelope>
--uuid:80805a48-8715-46db-93f0-781f9ba28317+id=786--

因此,我计划扩展SoapClient并重载__doRequest,以便我可以操纵响应并删除所有不需要的数据。

class extSoapClient extends SoapClient
{
    public function __doRequest($request, $location, $action, $version, $one_way = 0)
    {
        $response = parent::__doRequest($request, $location, $action, $version, $one_way);

        // strip away everything but the xml - <s:Envelope .... </s:Envelope>

        return $response;
    }
}

我唯一的问题是如何做到这一点。 我确信我可以在preg_replace()上使用$response,但我还没有一个最模糊的正则表达式来创造魔法。这绝对不是我的强项。 有人可以帮忙吗?

0 个答案:

没有答案