2013-03-12 63 views
-1

如何使用php 5從以下xml讀取所有int值?如何使用php讀取特定的XML節點

我想使用simplexml_load_string,但無法獲得確切的值。

我的php代碼。

$xml = simplexml_load_string($result); 
echo $xml->params[0]->param[0]->value[0]->array[0]->data[0]->value[0]->array[0]->data[0]->value[0]->int; 

的XML

<?xml version='1.0'?> 
<methodResponse> 
    <params> 
     <param> 
      <value><array><data> 
       <value><array><data> 
        <value><int>51838</int></value> 
        <value><double>57.83089533672552</double></value> 
       </data></array></value> 
       <value><array><data> 
        <value><int>20820</int></value> 
        <value><double>56.58239590002292</double></value> 
       </data></array></value> 
       <value><array><data> 
        <value><int>49286</int></value> 
        <value><double>55.950788550857176</double></value> 
       </data></array></value> 
       <value><array><data> 
        <value><int>51843</int></value> 
        <value><double>55.09419216830168</double></value> 
       </data></array></value> 
      </data></array></value> 
     </param> 
    </params> 
</methodResponse> 
+0

包含您的PHP代碼,因爲這是您遇到的困難。 – Boaz 2013-03-12 13:57:00

回答

0

不是去過分深嵌套在XML事情發表評論。我會假設你有一個理由。

$doc = new SimpleXMLElement($xml); 
$valueList = $doc->xpath('/methodResponse/params/param/value/array/data/value'); 
while(list(, $node) = each($valueList)) { 
    $intElement = $node->xpath('array/data/value/int'); 
    echo $intElement[0] . PHP_EOL; 
} 

將導致:

51838 
20820 
49286 
51843 

$valueList分配所有value節點的列表。第二個xpath查詢獲取每個節點中的int。請閱讀SimpleXMLElementxpath

+0

僅供說明:「過度嵌套」的原因稱爲XML-RPC(http://xmlrpc.scripting.com/spec.html)。它可能看起來過載,但這就是它被指定的方式。 – Quasdunk 2013-03-12 15:07:04

1
$domObj= new DOMDocument(); 
$domObj->load("test.xml"); 
$value= $domObj->getElementsByTagName("value"); 
foreach($value as $val) 
{ 

$ints = $val->getElementsByTagName("int"); 
$intVal = $ints->item(0)->nodeValue; 

echo "$intVal"; 
}