2010-06-24 220 views
0

我有一個問題。xml解析問題php

我有2個PHP腳本,一個使用curl發送xml數據,另一個應該讀取發佈的數據。

問題是接收器腳本沒有獲取任何XML中的元素。

任何幫助將appriciated。

SENDER SCRIPT:

<?php 
$xml = ' 
<SMS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="http://api.xxxxxxxxxxxxxxx.co.uk/send/xxxxxxxxxxxxxxx.xsd"> 
    <auth> 
     <user>yourusername</user> 
     <pass>yourpassword</pass> 
    </auth> 
    <originator>your_sender_name</originator> 
    <messages> 
     <msg id="1" gsm="440000000000"> 
      <text>Please come for you appointment tomorrow morning at 12:45</text> 
     </msg>   
     <msg id="1" gsm="440000000000"> 
      <text>Please come for you appointment tomorrow morning at 14:00</text> 
     </msg> 
    </messages> 
</SMS>'; 

function sendMessages($xml) { 
    $curl = curl_init(); 
    //$url = "https://sapi.xxxxxxxxxxxxxxx.co.uk/send/xml.php"; 
    $url = "http://api.xxxxxxxxxxxxxxx.co.uk/send/xml.php"; 

    $options = array(CURLOPT_URL => $url, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => $xml); 
    curl_setopt_array($curl, $options); 
    $response = curl_exec($curl); 
    curl_close($curl); 
    return $response; 
} 

echo sendMessages($xml); 
//echo $xml; 
?> 

RECIEVER SCRIPT:

<?php 
function logResult() { 
    $postdata = file_get_contents("php://input"); 
    $dom = new DOMDocument(); 
    $dom->loadXML($postdata); 
    $xp = new domxpath($dom); 
    $messages = $xp->query("//SMS/auth"); 
    //var_dump($messages); 
    foreach ($messages as $node) { 
     //var_dump($node); 
     return $node->getAttribute('user'); 
     //$node->getAttribute('sentdate'); 
     //$node->getAttribute('donedate'); 
    } 
} 
echo logResult(); 
?> 
+0

發件人XML在這裏http://fixee.org/paste/k5i6qca/,有時候stackoverflow很奇怪;( – 2010-06-24 10:16:20

+0

@Stefan Gehrig:你的郵件沒有顯示出來,你可以重新發布 – 2010-06-24 10:25:34

+0

@Kyle:I只是通過正確縮進行使源代碼和XML更具可讀性...我的一方還沒有答案 – 2010-06-24 10:27:32

回答

0

我無法得到DOMDocument甚至加載這個XML字符串,有或沒有命名空間。我不知道爲什麼。

我建議使用SimpleXMLElement。我使用它很多,而且效果很好。我也能夠解析你的XML字符串。