如何使用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>
答案 0 :(得分: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";
}
答案 1 :(得分: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
。在SimpleXMLElement和xpath上阅读。