使用xpath和php获取子元素

时间:2013-05-20 12:45:29

标签: php xml xpath

我有这个示例xml文件: -

<products>
   <product_id value="1">
       <tab_id value="251">
            <dist_region value="5" />
            <dist_region value="10066" />
            <dist_region value="10069" />
       </tab_id>
   </product_id>
</products>

我正在尝试使用tab_id获取XPath子元素,并且我希望得到一组子元素。

我的预期输出如下: -

  

dist_region,dist_region,dist_region

MY XPATH: -

$tab = $product->xpath('//tab_id/*');

任何人都可以建议获得子元素的XPath是什么? 感谢。

2 个答案:

答案 0 :(得分:2)

你试过的xpath对我有用。所以,试试下一个代码:

$sxml = new SimpleXMLElement($xml);
$xpath = $sxml->xpath('//tab_id/*');

$array = array();

foreach ($xpath as $child)
{
    $array[] = $child->getName();
}

echo implode(',',$array);

它为你提供了你想要的输出:dist_region,dist_region,dist_region。

$xml您的XML文件。

答案 1 :(得分:1)

您的XPath应基于value等特定条件(如果<tab_id id='256'>更可读)

$result = $product->query('//tab_id[@value=' . $id . ']/*');

然后循环遍历

if($result->length){
    foreach ($result as $item):
        echo "Value: ".$item['value'];
    echo "<hr>";
endforeach;
}