我试图从XML文件中执行一些sql查询,但当我从标记中获取查询时,它返回查询的次数比预期的要多。
<?xml version="1.0" encoding="utf-8"?>
<informes>
<informe>
</informe>
<indicadores>
<indicador>
<sql>
SELECT concat('Total Facturacion: ', round(sum(total))) as valor FROM infomatrix.dtmax_facturacion
</sql>
<link>
</link>
</indicador>
<indicador>
<sql>
SELECT concat('Stock total: ', round(sum(cantidad))) as valor FROM infomatrix.dtmax_stock
</sql>
<link>
</link>
</indicador>
</indicadores>
</informes>
这是我的php代码:
$sqlIndicador = $crawler->filterXpath('informes/indicadores/indicador');
$elements = array();
foreach($sqlIndicador as $element){
$elements[] = $element->getElementsByTagName("sql")->item(0)->nodeValue;
}
$indicadores = array();
foreach ($elements as $indicador) {
$data = $repositorio->obtenerSqlIndicador($indicador);
array_push($indicadores,$data);
}
由于节点之间的结构相同,$sqlIndicator返回2个结果,您正在迭代并获得另外2个结果。
将你的过滤器设为"informes/indicadores",然后循环到它中,这将是"indicator"元素,在这种情况下会产生2个结果。从这个元素中可以得到sql。