用于查找标记名称包含' Name'的元素的XPath表达式

时间:2013-02-18 07:41:26

标签: xml xpath contains

我是XPath的新手。

我正在寻找一种方法来获取标签名称包含特定字符串的所有元素。

例如,如果我有如下所示的XML,我想获得标签名称中包含“Name”一词的所有元素。即,我想获取以下元素:<SquareName><RectangleName><ParallelogramName>

我尝试了name()contains()等的一些组合,但它没有用。 请建议。

<Objects>
 <Four-Sided>
   <Square>
      <SquareName>ABCD</SquareName>
      <Length>4</Length>
      <Height>4</Height>
      <Colour>Blue</Colour>
   </Square>
   <Rectangle>
      <RectangleName>EFGH</RectangleName>
      <Length>10</Length>
      <Height>6</Height>
      <Colour>Brown</Colour>
   </Rectangle>
   <Parallelogram>
      <ParallelogramName>WXYZ</ParallelogramName>
      <Length>12</Length>
      <Height>4</Height>
      <Colour>Black</Colour>
   </Parallelogram>
</Four-Sided>
</Objects>

2 个答案:

答案 0 :(得分:29)

对于XPath解决方案:

//*[contains(local-name(), 'Name')]

答案 1 :(得分:0)

由于没有命名空间前缀,您也可以使用

//*[contains(name(), 'Name')]