2012-05-31 20 views
2

我得到一个SOAP响应,看起来像这样:越来越XmlSearch只返回兄弟姐妹,没有孩子

<Activity> 
    <Id>A</Id> 
    <Subject>foo</Subject> 
    <Activity>Task</Activity> 
</Activity> 
<Activity> 
    <Id>B</Id> 
    <Subject>bar</Subject> 
    <Activity>Appointment</Activity> 
</Activity> 
<Activity> 
    <Id>C</Id> 
    <Subject>snafu</Subject> 
    <Activity>Task</Activity> 
</Activity> 

ColdFusion中,我试图分析出活动与此节点:

<cfset arrMainNodes = XmlSearch(soapResponse, "//*[name()='Activity']") /> 

问题是,而不是如果获得一个数组与三元素nts,我得到了一个包含6:3父母和3个孩子的数组。

我不能为了我的生活找出XPath声明只会找到兄弟姐妹,而不是孩子。

请帮忙。

回答

1

使用

//*[name()='Activity' and not(ancestor::*[name()='Activity' ])] 

这将选择该文件,名字是"Activity"并没有与名称"Activity"祖先中的所有元素。

+0

我可能是错的,但我不认为他正在试图将一个名为'Activity'的孩子排除在外。但抓住父'活动'元素而不是孩子,即'任务' – Leigh

+0

或“简化”:)的东西,也许只是一个简单的'/ * /活动'? –

+0

@PavelVeller:OP提供了一个*片段*,它不能保证被XML文档中的顶层元素“生成”。猜测是没有意义的。 –