有没有一种方法,通过SOAP服务创建XML结构后如何解决问题

时间:2019-06-05 13:08:48

标签: php xml soap simplexml simplexml-load-string

我有一个XML问题,它由soap作为我的请求给出。它具有标签,因此无法使用我为其创建的文件。

从我的SOAP响应中,创建具有以下结构的XML:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <GetListProduktResponse xmlns="www.myurl.com">
            <data>
                <produkt>
                    <data1>Lorem</data1>
                    <data2>Ipsum</data2>
                    <data3>Pipsum</data3>
                    <data4>Fixum</data4>
                </produkt>
                <produkt>
                    <data1>Lorem</data1>
                    <data2>Ipsum</data2>
                    <data3>Pipsum</data3>
                    <data4>Fixum</data4>
                </produkt>
            </data>
        </GetListProduktResponse>
    </soap:Body>
</soap:Envelope>

例如,我将其保存到/myfile.xml /

现在,我正在尝试处理XML文件。

$getFile = file_get_contents('myfile.xml');
//Here it is ok
$arr = simplexml_load_string($getFile);
//Here it returns me an empty SimpleXMLElement object

我希望它能给我这样的对象:

SimpleXMLElement #067f
GetListProduktResponse => SimpleXMLElement #2da9
data => SimpleXMLElement #c1e8
produkt => array (6952) [ ... ]
  • 当然数组中的数字不匹配,我只是从实时数据中复制了我自己的转储)

它仅返回:

SimpleXMLElement #0d9b

如果我从XML中删除了<soap:Body>标记,它确实可以工作,但是只要它存在,就无法正常工作。

我尝试通过domDocument访问XML的内容,并且还尝试显示docNamespaces之类的东西,但是都没有帮助。

有人可以建议我吗?

谢谢。

0 个答案:

没有答案