在PHP中访问soap xml节点

时间:2014-07-01 14:35:12

标签: php xml soap

在墙上摔了一整天后,我觉得我需要一些帮助。 我从肥皂电话中收到以下答案:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <SearchBrochuresResponse xmlns="http://services.iceportal.com/service">
            <SearchBrochuresResult>
                <pageNumber>0</pageNumber>
                <brochures>
                    <SearchBrochure>
                    <iceID>10427</iceID>
                    <city>Acapulco</city>
            </SearchBrochure>
        </brochures>
    </SearchBrochuresResult>
</SearchBrochuresResponse>
</soap:Body>
</soap:Envelope>

我尝试了所有我能找到的关于stackoverflow和我发现的所有其他来源的主题,但我无法访问iceID,基本上我的目标是进入一个php变量iceID节点的值。 / p>

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您可以查看XPath,这是用于导航和选择XML文档部分的技术。 Wikipedia on XPath

如果您需要更多帮助,请发布更具体的问题。你有什么尝试?您只需要提取该特定值吗?

答案 1 :(得分:0)

假设您的xml数据在变量$data中,您可以从中创建一个简单的XML对象,然后按以下方式访问它的节点(例如获取iceID):< / p>

$xml = simplexml_load_string($data);

$iceID = (string)$xml->children('soap', true)
    ->Body->children()
    ->SearchBrochuresResponse
    ->SearchBrochuresResult
    ->brochures
    ->SearchBrochure
    ->iceID;