2010-08-13 71 views
0

我有一个SOAP响应,我想要转换为DOM文档。我正在使用loadxml(),但它返回一个空对象。PHP SOAP XML响应转换为DOM文档loadxml() - 不工作,空

<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:getResponse xmlns:ns2="http://api.sponsoredlistings.ask.com/api/v5/"><rval xmlns="http://api.sponsoredlistings.ask.com/api/v5/"><ns2:totalNumEntries>6</ns2:totalNumEntries><ns2:entries><ns2:id>3000063</ns2:id><ns2:name>QA_Team_1</ns2:name><ns2:status>ACTIVE</ns2:status><ns2:servingStatus>Inactive</ns2:servingStatus><ns2:startDate>20100730</ns2:startDate><ns2:endDate>20991231</ns2:endDate><ns2:budget><ns2:period>MONTHLY</ns2:period><ns2:amount><ns2:amount>3333.3333</ns2:amount></ns2:amount><ns2:deliveryMethod>STANDARD</ns2:deliveryMethod></ns2:budget><ns2:biddingStrategy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:ManualCPC"/><ns2:adServingOptimizationStatus>OPTIMIZE</ns2:adServingOptimizationStatus><ns2:stats><ns2:network>ALL</ns2:network><ns2:statsType>Stats</ns2:statsType></ns2:stats><ns2:statusReason>FutureDT</ns2:statusReason></ns2:entries><ns2:entries><ns2:id>3000064</ns2:id><ns2:name>Sample Campaign for Itay</ns2:name><ns2:status>ACTIVE</ns2:status><ns2:servingStatus>Inactive</ns2:servingStatus><ns2:startDate>20100730</ns2:startDate><ns2:endDate>20991231</ns2:endDate><ns2:budget><ns2:period>MONTHLY</ns2:period><ns2:amount><ns2:amount>3333.3333</ns2:amount></ns2:amount><ns2:deliveryMethod>STANDARD</ns2:deliveryMethod></ns2:budget><ns2:biddingStrategy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:ManualCPC"/><ns2:adServingOptimizationStatus>OPTIMIZE</ns2:adServingOptimizationStatus><ns2:stats><ns2:network>ALL</ns2:network><ns2:statsType>Stats</ns2:statsType></ns2:stats><ns2:statusReason>FutureDT</ns2:statusReason></ns2:entries><ns2:entries><ns2:id>3000065</ns2:id><ns2:name>Sample Campaign API Report Testing 1</ns2:name><ns2:status>ACTIVE</ns2:status><ns2:servingStatus>Inactive</ns2:servingStatus><ns2:startDate>20100802</ns2:startDate><ns2:endDate>20991231</ns2:endDate><ns2:budget><ns2:period>MONTHLY</ns2:period><ns2:amount><ns2:amount>3333.3333</ns2:amount></ns2:amount><ns2:deliveryMethod>STANDARD</ns2:deliveryMethod></ns2:budget><ns2:biddingStrategy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:ManualCPC"/><ns2:adServingOptimizationStatus>OPTIMIZE</ns2:adServingOptimizationStatus><ns2:stats><ns2:network>ALL</ns2:network><ns2:statsType>Stats</ns2:statsType></ns2:stats><ns2:statusReason>FutureDT</ns2:statusReason></ns2:entries><ns2:entries><ns2:id>3000066</ns2:id><ns2:name>CampaignSridRevewSB</ns2:name><ns2:status>ACTIVE</ns2:status><ns2:servingStatus>Active</ns2:servingStatus><ns2:startDate>20100810</ns2:startDate><ns2:endDate>20991231</ns2:endDate><ns2:budget><ns2:period>DAILY</ns2:period><ns2:amount><ns2:amount>10000.0</ns2:amount></ns2:amount><ns2:deliveryMethod>STANDARD</ns2:deliveryMethod></ns2:budget><ns2:biddingStrategy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:ManualCPC"/><ns2:adServingOptimizationStatus>OPTIMIZE</ns2:adServingOptimizationStatus><ns2:stats><ns2:network>ALL</ns2:network><ns2:statsType>Stats</ns2:statsType></ns2:stats></ns2:entries><ns2:entries><ns2:id>3000067</ns2:id><ns2:name>Campaign #3000067</ns2:name><ns2:status>ACTIVE</ns2:status><ns2:servingStatus>Active</ns2:servingStatus><ns2:startDate>20100811</ns2:startDate><ns2:endDate>20991231</ns2:endDate><ns2:budget><ns2:period>DAILY</ns2:period><ns2:amount><ns2:amount>10000.0</ns2:amount></ns2:amount><ns2:deliveryMethod>STANDARD</ns2:deliveryMethod></ns2:budget><ns2:biddingStrategy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:ManualCPC"/><ns2:adServingOptimizationStatus>OPTIMIZE</ns2:adServingOptimizationStatus><ns2:stats><ns2:network>ALL</ns2:network><ns2:statsType>Stats</ns2:statsType></ns2:stats></ns2:entries><ns2:entries><ns2:id>3000068</ns2:id><ns2:name>Campaign #3000068</ns2:name><ns2:status>ACTIVE</ns2:status><ns2:servingStatus>Active</ns2:servingStatus><ns2:startDate>20100811</ns2:startDate><ns2:endDate>20991231</ns2:endDate><ns2:budget><ns2:period>DAILY</ns2:period><ns2:amount><ns2:amount>10000.0</ns2:amount></ns2:amount><ns2:deliveryMethod>STANDARD</ns2:deliveryMethod></ns2:budget><ns2:biddingStrategy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:ManualCPC"/><ns2:adServingOptimizationStatus>OPTIMIZE</ns2:adServingOptimizationStatus><ns2:stats><ns2:network>ALL</ns2:network><ns2:statsType>Stats</ns2:statsType></ns2:stats></ns2:entries></rval></ns2:getResponse></S:Body></S:Envelope> 

可能是什么原因?

回答

0

什么告诉你它是空的? DOMDocument :: loadxml()将返回false它有一个错误,而不是一个空对象。

无论如何,当我运行这段代码($ DOC为您发布的XML英里长的单行):

$dom = new DOMDocument(); 
$dom->loadXML($doc); 
$node_list = $dom->getElementsByTagName('totalNumEntries'); 
$node = $node_list->item(0); 
echo $node->nodeValue; 

输出为“6”,符合市场预期。

+0

感谢您的提示,我用的var_dump打印的内容: 这的var_dump的结果是: 对象(DOM文档)#17(0){ } – 2010-08-13 19:17:59

+0

Sry基因迟到的答案,但我绊倒这个问题。这是您将始终为DOM对象获取的默认输出,即使该对象具有内容。这是因为,内容被隐藏到php脚本端。您将不得不使用对象方法来获取正确的状态信息。 – Ron 2012-11-14 15:18:24