2015-12-29 2 views
2

Я пытаюсь выпустить некоторые sql-запросы из XML-файла, но когда я получаю запрос из тега, он возвращает запросы больше времени, чем ожидалось.Symfony2 XPath возвращает повторяющиеся узлы

<?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); 
    } 

ответ

0

Поскольку структура такой же между узлами, то $ sqlIndicador возвращается 2 результатов, которые вы перебор и получать более 2.

Сделайте свой фильтр как 'informes/indicadores', а затем вы зациклитесь на нем, который будет элементом 'indicador', в результате получится 2 результата. И из этого элемента вы получите sql.

+0

Это не работало. Он может возвращать два запроса, но он возвращает четыре раза каждый запрос. –

+0

Можете ли вы сделать phpfiddle или что-то в этом роде? –

Смежные вопросы