-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

$valueList分配了所有value节点的列表。第二个 xpath 查询获取int每个节点中的 。阅读SimpleXMLElementxpath

于 2013-03-12T14:22:38.040 回答