-1

php 5を使用して以下のxmlからすべてのint値を読み取るにはどうすればよいですか?

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>
4

2 に答える 2

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"; 
}  
于 2013-03-12T14:01:49.420 に答える
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

$valueListvalueすべてのノードのリストが割り当てられます。2番目のxpathクエリは、int各ノードでを取得します。SimpleXMLElementxpathを読んでください。

于 2013-03-12T14:22:38.040 に答える