Auswahl der Kinder des ersten Ergebnisses mit xpath

Ich habe ein Stück XML, in dem die gleichen Informationen als Kind von verschiedenen Knoten angezeigt werden können. Sowie :

<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>

Mein Ziel ist es, die Größen der Produkt-ID ABC123 auszuwählen und als Array zu speichern. Der aktuelle Code, den ich habe, ist:

$arrTest=array();


    foreach($xml->xpath('//root/category/products/product[@id= "'.$productCall.'" ]/sizes/size') as $size){

              array_push($arrTest, $size["name"]);
      }

$ productCall ist die ID, nach der ich suche. In diesem Fall ist es ABC123.

Der Ausgang ist S, M, L, XL, 2XL, 3XL, S, M, L, XL, 2XL, 3XL. Das heißt, es werden die beiden gefundenen Einträge gelesen. Ich habe dies in Anbetracht der foreach-Schleife erwartet, aber ich kann anscheinend keinen Weg finden, um nur die Ausgabe des ersten Ergebnisses zu erhalten. Ich habe versucht, [0] und [1] hinzuzufügen:

$y=$xml->xpath('//root/category/products/product[@id= "'.$productCall.'" ][1]/sizes/size');

[0] gibt nichts zurück und [1] gibt die gleichen Ergebnisse zurück, die ich bereits erhalte.

Ich hoffe, das liegt einfach daran, dass ich etwas Grundlegendes verpasse oder nur überdenke, da ich wirklich noch nie mit xpath gearbeitet habe.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage