gpt4 book ai didi

html - 如何使用 Xpath 从表中提取所有包含连接单元格的行?

转载 作者:行者123 更新时间:2023-12-03 17:31:59 24 4
gpt4 key购买 nike

我有一个 html 表:

<table class="info">
<tbody>
<tr><td class="name">Year</td><td>2011</td></tr>
<tr><td class="name">Storey</td><td>3</td></tr>
<tr><td class="name">Area</td><td>170</td></tr>
<tr><td class="name">Condition</td><td>Renovated</td></tr>
<tr><td class="name">Bathroom</td><td>2</td></tr>
</tbody>
</table>

在此表中,数据的组织方式是每行包含 2 个包含在 <td> 中的单元格。标签。第一个单元格包含有关数据类型的信息。例如房屋 build 年份。第二个单元格包含年份信息本身,即 2011 年。

我想以数据类型和信息被划分并相互对应的方式提取数据。我想以这种方式提取数据类型和信息:
Year - 2011
Storey - 3
Area - 170
Condition - Renovated
Bathroom - 2

现在我使用 Xpath 的连接函数 连续 .这是我的 Xpath 表达式:
concat(//table[@class="info"]//tr//td[contains(@class, 'name')]/text()  , ' - ', //table[@class="info"]//tr//td[not(contains(@class, 'name'))]/text())

这个 XPath 返回这个结果:
Year - 2011

我的表包含 5 行。我的 Xpath 表达式只返回了第一行连接单元格。

但是我发送到 的 2 个 Xpath 表达式连续 函数单独返回所有行的正常结果。

这些是 2 个 XPath 表达式:
//table[@class="info"]//tr//td[contains(@class, 'name')]/text()


//table[@class="info"]//tr//td[not(contains(@class, 'name'))]/text()

这两个表达式都返回包含所需信息的所有行。当我将这两个表达式发送到 连续 函数,它只返回第一行。

如何使用 Xpath 获取所有包含连接单元格的行?我想只使用 Xpath 是不可能的。在这种情况下,我是否必须借助一些编程语言(如 PHP)或者可能是新版本的 Xpath 或一些复杂的表达式来帮助我?

最佳答案

如果你使用java:

1 获取一个Dom文档

2 循环

  int i=1;
while (true)
{
if (xpath.compile("//tr["+i+"]").evaluate(document,XPathConstants.NODE) ==null) break;

expr = xpath.compile("concat (//tr["+i+"]/td[@class='name']/text(),' - ',//tr["+i+"]/td[not(@class='name')]/text())");
resX= (String) expr.evaluate(document, XPathConstants.STRING);
System.out.println(resX);
i++;
}

另外一个选项:

得到每个 tr
expression="//table[@class=\"info\"]//tr";
XPathExpression expr = xpath.compile(expression) ;
NodeList nodes = (NodeList) expr.evaluate(document, XPathConstants.NODESET);

和里面
  for (int temp1 = 0; temp1 < nodes.getLength(); temp1++) {
Node nodeSegment = nodes.item(temp1);
if (nodeSegment.getNodeType() == Node.ELEMENT_NODE) {
...
expr = xpath.compile("concat (td[@class='name']/text(),' - ',td[not(@class='name')]/text())");
resX= (String) expr.evaluate(eElement, XPathConstants.STRING);
System.out.println(resX);

关于html - 如何使用 Xpath 从表中提取所有包含连接单元格的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33982600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com