xml - 使用 xPath 从表中获取特定数据

标签 xml xpath html-table xpath-2.0

我有这张带有源代码的表格 HERE :

enter image description here

我想获取所有行,我可以使用:

enter image description here

预期的最终输出使用 string-join($doc//*[@id='salaries']/tbody/tr/normalize-space(.), ' ') 是:

1985-86 Los Angeles Lakers NBA $2,030,000
1987-88 Los Angeles Lakers NBA $2,000,000
1988-89 Los Angeles Lakers NBA $3,000,000

我的问题是,如何从最终输出中删除第三列(在本例中名为 NBA)以获得:

1985-86 Los Angeles Lakers $2,030,000
1987-88 Los Angeles Lakers $2,000,000
1988-89 Los Angeles Lakers $3,000,000

ps: 我不确定那个专栏总是在那个地方,但是 anchor 里面包含'league' a[contains(@href, 'league')]

最佳答案

这个 XPath 2.0 表达式:

  for $i in 1 to count(/tbody/tr),
      $r in /tbody/tr[$i],
      $s in string-join($r/td[not(position() eq 3)]/normalize-space(.), ' ')
   return
     concat($s, '
')

在对提供的 XML 文档进行评估时:

<tbody>
<tr class="" data-row="0">
   <td align="left">1985-86</td>
   <td align="left"><a href="/teams/LAL/1986.html">Los Angeles Lakers</a></td>
   <td align="left"><a href="/leagues/NBA_1986.html">NBA</a></td>
   <td align="right" csk="2030000">$2,030,000</td>
</tr>
<tr class="" data-row="1">
   <td align="left">1987-88</td>
   <td align="left"><a href="/teams/LAL/1988.html">Los Angeles Lakers</a></td>
   <td align="left"><a href="/leagues/NBA_1988.html">NBA</a></td>
   <td align="right" csk="2000000">$2,000,000</td>
</tr>
<tr class="" data-row="2">
   <td align="left">1988-89</td>
   <td align="left"><a href="/teams/LAL/1989.html">Los Angeles Lakers</a></td>
   <td align="left"><a href="/leagues/NBA_1989.html">NBA</a></td>
   <td align="right" csk="3000000">$3,000,000</td>
</tr>
</tbody>

产生想要的、正确的结果:

 1985-86 Los Angeles Lakers $2,030,000
 1987-88 Los Angeles Lakers $2,000,000
 1988-89 Los Angeles Lakers $3,000,000

如果不能保证要排除的列的位置是固定的,使用:

  for $i in 1 to count(/tbody/tr),
      $r in /tbody/tr[$i],
      $s in string-join($r/td[not(starts-with(a/@href,'/leagues'))]
                              /normalize-space(.), ' ')
   return
     concat($s, '&#xA;')

关于xml - 使用 xPath 从表中获取特定数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11793193/

相关文章:

javascript - XML 保存到文件 Javascript asp

xml - 删除 XML 节点后损坏的 Excel 文件

html - 用数据做同心正方形

xml - XSLT 打开其他 xml 文件

Java SAX 解析器命名空间抛出 NullPointerException

xslt - XSL 中每组值的最大总和

xpath - 使用 XPATH 获取非空元素

xml - Xpath表达式从CDATA获取值

html - CSS 文本溢出 : ellipsis in Table

Html表格/tr高度