尝试获取所有如果individual_sex匹配然后返回两个product_id

时间:2013-04-10 07:47:31

标签: php xml xpath

这是我的XML文件:

<products>
  <product_id value="1">
    <tab_id value="351">
        <city_name value="Jamnagar"/>
        <individual_sex value="2"/>
    </tab_id>
  </product_id>
  <product_id value="2">
    <tab_id value="352">
        <city_name value="Rajkot"/>
        <individual_sex value="2"/>
    </tab_id>
  </product_id>
</products>

这是我在php XPath中的尝试

list ($gender_id) = $product->xpath("//individual_sex[@value='$sex']/../../@value");

我尝试检查individual_sex属性值是否匹配,然后同时返回product_id1, 2(这是product_id)。

2 个答案:

答案 0 :(得分:1)

正如几个用户已经说过的那样,您的xpath没问题,但您在这里使用list不正确。
要访问<product_id>的各个值,请执行:

// assuming $xml is your simplexml-object...
$results = $xml->xpath("//individual_sex[@value='2']/../../@value");

foreach ($results as $result) echo $result['value'],"<br />"; 

live-demo:http://codepad.viper-7.com/h0Ckxc

答案 1 :(得分:0)

你刚刚在代码中犯了一个小错误,你只需要为变量分配一个条目:

list ($gender_id) = ...

http://php.net/list。如果要获取整个数组,请指定它:

$gender_ids = ...

请参阅http://php.net/array以及有关如何使用PHP编写代码的基本描述,即基本语法。