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

use*_*317 23 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>
Run Code Online (Sandbox Code Playgroud)

Jen*_*rat 32

对于XPath解决方案:

//*[contains(local-name(), 'Name')]
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用正则表达式,或者如果仅用于此谓词,则可以使用另一个谓词(或使用“或”将它们组合起来):“//*[contains(local-name(), 'Name')][local-name() != '期间名称']` (2认同)