2013-07-07 98 views
0

我猜NameSpaces導致simplexml_load_string不起作用,但我絕對不確定。PHP - 使用NameSpaces解析複雜的XML

log.xml

<?xml version="1.0" encoding="UTF-8"?> 
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sns="http://soap.com/pbx"> 
    <env:Body> 
     <sns:CDR> 
     <PrimaryCallID>[email protected]</PrimaryCallID> 
     <CallID>[email protected]</CallID> 
     <From>"SMITH JOHN " &lt;sip:[email protected]:5060;user=phone&gt;</From> 
     <To>&lt;sip:[email protected]:5060;user=phone&gt;</To> 
     <Direction>O</Direction> 
     <Type>attendant</Type> 
     <RemoteParty /> 
     <LocalParty /> 
     <TrunkName /> 

... more xml... 

     </sns:CDR> 
    </env:Body> 
</env:Envelope> 

parse.php

<?php 
$string = "log.xml"; 
$xml = simplexml_load_string($string); 
print_r($xml); 
?> 

我越來越沒有從print_r 回我缺少什麼?

回答

0

simplexml_load_string將一個字符串作爲參數而不是文件名。
你試圖加載字符串「log.xml」作爲XML和不工作
您可以使用此這一翻譯:

$filename = "log.xml"; 
$xml = simplexml_load_string(file_get_contents($filename)); 
print_r($xml); 
+0

好點!進行了更改,現在的結果是:'SimpleXMLElement Object()' 我也切換到'simple_load_file()',結果相同。 – coffeemonitor

+0

是與php文件在同一目錄中的xml文件? – clem

+0

是的,絕對是在同一個目錄 – coffeemonitor