2011-12-22 51 views
0

simeplxml_load_string的子標籤的內容我有這樣的XML得到使用PHP

<parent> 
<sms> 
<response> 
    <message>message</message> 
    <reponse>text<response> 
</response> 
</sms> 
<sms> 
<response> 
    <message>message</message> 
    <reponse>text2<response> 
</response> 
</sms> 
</parent> 

我想響應標籤的全部內容即<reponse1>text<response1><reponse2>text<response2>。其中我將在一個數組strore。我試過的id

function xmlSplitUpResponseXML($xmlvalue) 
{ 
    $returnSplit = array(); 
    $r = 0; 
    if(simplexml_load_string($xmlvalue)) 
    { 
     $xml = simplexml_load_string($xmlvalue); 
     foreach($xml->children() as $child) 
     { 

     if(strtolower($child->getName())=='sms') 
      { 
      foreach ($child as $fields): 
       if(strtolower($fields->getName())=='response') 
       { 
        echo $fields; 
       } 
      } 
    } } 
} 

但是文字沒有被回顯。 我該怎麼做。

回答

0

您的XML不是完全地正確,但固定時 - 試試這個:

echo $fields->message."<br>"; 
echo $fields->response."<hr>"; 

作品在你給出的例子,這個固定的xml:

$string = "<parent><sms><response><message>message</message><response>text</response></response></sms><sms><response><message>message</message><response>text2</response></response></sms></parent>"; 
+0

但我能夠得到'文字'。但我想要整個標籤文本 Arasu 2011-12-22 09:31:00

0

嗯,看來你需要一些XPath來拯救...

鑑於以下固定XML(注意嵌套響應節點)

<parent> 
    <sms> 
     <response> 
      <message>message</message> 
      <response>text</response> 
     </response> 
    </sms> 
    <sms> 
     <response> 
      <message>message</message> 
      <response>text2</response> 
     </response> 
    </sms> 
</parent> 

下面的PHP會爲你做。

<?php 
     $xml = simplexml_load_file("sms.xml"); 
     // Find the sms response (note responses are nested in a parent response for some reason 
     $result = $xml->xpath('/parent/sms/response/response'); 
     while(list(, $node) = each($result)) { 
      // to just output the value of the node 
      // echo $node; 

      // to wrap value in tags *bad idea* 
      echo $node->asXML(); 
     } 
?> 

不確定爲什麼你想要返回一個XML字符串,對我來說好像是一個壞主意。你在做什麼 輸出?如果(strtolower($ fields-> getName())=='response')我已經粘貼了這些代碼($ fields-> response) )可能更適合構建一個XML文檔,只是猜測...