使用xpath选择第一个结果的子项

I have a piece of XML where the same information can appear as a child of different nodes. Such as :

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

My goal is to select the sizes of product id ABC123 and store them as an array. The current code that I have is :

$arrTest=array();


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

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

$productCall is the id I am looking for. In this case it's ABC123.

The output is S,M,L,XL,2XL,3XL,S,M,L,XL,2XL,3XL. Meaning that it is reading the two entries that were found. I expected this given the foreach loop, but I can't seem to find a way to just get the output of the first result. I have tried adding [0] and [1] :

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

[0] returns nothing and [1] returns the same results I'm already getting.

I'm hoping this is a simple matter of me missing something something basic or just over-thinking, as I really haven't worked with xpath before.

查看全部
douhoulei4706
douhoulei4706
2012/10/26 18:42
  • xpath
  • xml
  • php
  • 点赞
  • 收藏
  • 回答
    私信
满意答案
查看全部

1个回复