2016-02-26 70 views
1

我有一个xml文件,我想要搜索一个词说searchTearm,然后想要返回该搜索项周围标签的名称。 例如: - 在下面的例子中,searchTerm被标签namespace,querySubject和queryItem包围,我试图返回这些标签的名称。名称包含在名称标签中。用于xml搜索的Xpath

使用单线的XPath任何帮助这个:

<namespace> 
    <name locale="en">Test</name> 
    <lastChanged>2016-01-12T12:42:46</lastChanged> 
     <namespace><name locale="en">Database Layer</name> 
      <querySubject status="valid"><name locale="en">qsxyz</name> 
       <queryItem><name locale="en">qixyz</name> 
        <>...searchTerm..</> 
       </queryItem> 
      </querySubject> 
     </namespace> 
</namespace> 

下面的XPath似乎不工作: -

/namespace/namespace/querysubject/queryItem[contains(., 'searchTerm')] 
+0

月1日,XPath是大小写敏感的,所以'.../querySubject/...' – splash58

回答

1

如果我理解正确的

/namespace/namespace/querySubject/queryItem[contains(., 'searchTerm')]/ancestor-or-self::*/name 

选择name所有祖先的标签queryItemsearchTerm

结果

Element='<name locale="en">Test</name>' 
Element='<name locale="en">Database Layer</name>' 
Element='<name locale="en">qsxyz</name>' 
Element='<name locale="en">qixyz</name>' 

如果您添加尾随/text()您将收到不元素,但有值

+0

它只给予第一个元素名称即。 Element ='测试'我想要其他三个 – user2816085

+0

http://www.utilities-online.info/xpath/?save=099ff09f-c3d5-415e-9bf6-00a40cbef7d3-xpath – splash58

+0

非常感谢@ splash58然后我的代码无法处理数据.....我猜 – user2816085