介绍CakePHP

问题描述:

所以,我使用CakePHP获取parentnode用XPath查询和我有一个XML文件,它看起来是这样的:介绍CakePHP

<something> 
<table id="t1"> 
    <columns> 
    <column id="c1"/> 
    <column id="c2"/> 
    </columns> 
</table> 
<table id="t2"> 
    <columns> 
...... 
</something> 

我是用设置::提取物来搜索基于列在它的身份证,没有问题,那一个:

Set::extract("/something/table/columns/column[id=$column_id"]", $array); 

现在我需要得到该列的父表。我尝试使用Set和SimpleXMLElement,但无济于事。

有人可以帮助我吗?感谢

+0

好问题,+1。请参阅我的答案,了解不使用任何反向轴的完整且简短的XPath解决方案。 :) – 2011-05-08 21:24:33

使用

Set::extract("/something/table[columns/column[id=$column_id"]]", $array); 

XPath表达式

/something/table[columns/column[id=$column_id"]] 

选择所有table元件是顶部元件something的儿童和具有一个columns/column grand-子元素的字符串值为id小孩等于变量$column_id的字符串值。

+0

我不太了解XPath,但理论上它可能会起作用。它只是没有Set :: extract 它给了我一个空的数组。 – peugas55 2011-05-08 21:52:20

+0

@ peugas55:尝试使用SimpleXMLElement :: xpath – 2011-05-08 22:04:55

+0

@ peugas55:我不知道PHP及其使用的XPath引擎或其API。如果这个XPath表达式“不起作用”,那么你的问题不是关于XPath,而是关于这个特定的XPath实现。我可以提供一个完整的XSLT代码示例,确认我的答案中的XPath表达式选择了想要的元素 - 是否要我这样做? – 2011-05-08 22:06:02