Selecionando os filhos do primeiro resultado usando xpath
Eu tenho um pedaço de XML onde a mesma informação pode aparecer como um filho de nós diferentes. Tal como :
<root>
<category id=1>
<product id="ABC123" >
<sizes>
<size name="S"/>
<size name="M"/>
<size name="L"/>
<size name="XL"/>
<size name="2XL"/>
<size name="3XL"/>
</sizes>
</product>
</products>
</category>
<category id=2>
<products>
<product id="ABC123" >
<sizes>
<size name="S"/>
<size name="M"/>
<size name="L"/>
<size name="XL"/>
<size name="2XL"/>
<size name="3XL"/>
</sizes>
</product>
<product id="PPP543" >
<sizes>
<size name="S"/>
<size name="M"/>
<size name="L"/>
<size name="XL"/>
</sizes>
</product>
</products>
</category>
Meu objetivo é selecionar os tamanhos do ID do produto ABC123 e armazená-los como um array. O código atual que tenho é:
$arrTest=array();
foreach($xml->xpath('//root/category/products/product[@id= "'.$productCall.'" ]/sizes/size') as $size){
array_push($arrTest, $size["name"]);
}
$ productCall é o id que estou procurando. Neste caso é ABC123.
A saída é S, M, L, XL, 2XL, 3XL, S, M, L, XL, 2XL, 3XL. Significa que está lendo as duas entradas que foram encontradas. Eu esperava isso dado o loop foreach, mas não consigo encontrar uma maneira de obter apenas a saída do primeiro resultado. Eu tentei adicionar [0] e [1]:
$y=$xml->xpath('//root/category/products/product[@id= "'.$productCall.'" ][1]/sizes/size');
[0] não retorna nada e [1] retorna os mesmos resultados que já estou obtendo.
Eu estou esperando que isso seja uma simples questão de eu perder algo básico ou simplesmente pensar demais, já que eu realmente não trabalhei com o xpath antes.