duanrenzou1619 2018-09-20 18:38
浏览 156
已采纳

Soap XML输出创建一个数组

I am calling a web service using SoapClient and attempting to pull data from the response output. I have modified the Soap response so that it displays in XML.

I did so by writing this: $resultxml = htmlentities($client->__getLastResponse()) . " ";.

If you do a simple print_r($resultxml); you receive the full output, obviously.

What I am having trouble with is using DomDocument with $resultxml to create my techData array. If I copy and paste the Soap output and create a stand-alone XML file with it, then add it to $dom->loadXML(); the techData array is created perfectly. However, when I try to pull the XML from $resultxml I receive a blank array.

Any ideas as to why this is? Should I consider revising $resultxml = htmlentities($client->__getLastResponse()) . " ";? Am I calling it incorrectly?

Thanks so much.

My PHP with my SoapClient request and array code:

<?php
 $client = new SoapClient('http://services.chromedata.com/Description/7b?wsdl', array('trace' => 1));
 $account = ['number'=>"", 'secret'=>"", 'country'=>"US",    'language'=>"en"];
 $switch =  ["ShowAvailableEquipment", "ShowExtendedTechnicalSpecifications", "ShowExtendedDescriptions"];
 $vin = $_POST["b12"];

$result = $client->describeVehicle([
'accountInfo' => $account,
'switch' => $switch,
'vin' => $vin
]);

$resultxml = htmlentities($client->__getLastResponse()) . "
";

$dom = new DOMDocument();
$dom->loadXML($resultxml);


$techData = [];
foreach ( $dom->getElementsByTagName('technicalSpecification') as $techSpec )   {
$id = $techSpec->getElementsByTagName('titleId')->item(0)->nodeValue;
$techData [$id]= $techSpec->getElementsByTagName('value')->item(0)->getAttribute("value")."<br>";

}

print_r($techData);
echo "<br>";
  • 写回答

1条回答 默认 最新

  • drwjv28028 2018-09-20 19:20
    关注

    When you use htmlentities() - this will encode the markup, so

    <S:Body>
    

    becomes

    &lt;S:Body&gt;
    

    thiw ill not work if you then try to load it as an XML document, so just use

    $resultxml = $client->__getLastResponse();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 做了个的二极管反向饱和电流测量电路,但是测试达不到效果
  • ¥15 树莓派启动AP热点传入数据
  • ¥15 multisim中关于74ls192n和DSWPK开关的问题(相关搜索:计数器)
  • ¥15 在误装Windows server2019 后如何利用Windows.old恢复?
  • ¥20 代码实现状态连接包过滤防火墙的设计与实现
  • ¥15 vscode的红色箭头爆红和has no default export报错
  • ¥15 关于#sql#的问题:#情况描述 在用vs对项目进行调试时,出现找不到网络路径,然后查看SQL配置工具,发现SQL服务显示远程调用过程失败(相关搜索:防火墙)
  • ¥15 eNSP中基于默认路由及浮动路由的公司与分部互联和校园网综合项目
  • ¥15 主要进行描述泥浆在管路不同区段泥浆的密度不相同,泥浆的密度有高有低,此时管路的摩阻分布需要怎么计算,(标签-matlab)
  • ¥40 通过编制程序计算圆管内层流充分发展对流换热,参数如图5-4,以及公式5-16所示,要求用表5-6对程序计算准确性进行验证