提取行中带有xpath的表格单元格文本内容以供使用?

HTML方面,我有以下内容.我想提取表单元格的各种内容,但是我发现单元格中偶尔有一些嵌入的divs,也许还有其他我不确定的奇怪之处:

<p align="center">
    <img src="some_image.gif" alt="Some Title">
</p>
<TABLE WIDTH=500 BORDER=1 class=textwhite ALIGN=center CELLPADDING=0 CELLSPACING=0>
<TR>
<TD colspan=4 ALIGN=center><b>Title</b></TD>
</TR>
<TR>
<TD ALIGN=center>Title</TD>
<TD ALIGN=center>date</TD>
<TD ALIGN=center>value</TD>
<TD ALIGN=center>value</TD>
</TR><TR>
  <TD ALIGN=center>Title2</TD>
  <TD ALIGN=center></TD>
  <TD ALIGN=center><div class=redtext>----</div></TD>
  <TD>&nbsp;</TD>
</TR><TR>
  <TD ALIGN=center>Title3</TD>
  <TD ALIGN=center><div class=yellowtext>value</div></TD>
  <TD ALIGN=center><div class=redtext>value</div></TD>
  <TD ALIGN=center>value<SUP>6</SUP></TD>
</TR><TR>
  <TD ALIGN=center>Title4</TD>
  <TD ALIGN=center><div class=bluetext>value</div></TD>
  <TD ALIGN=center><div class=redtext>value</div></TD>
  <TD>&nbsp;</TD>
</TR></TABLE>

<blockquote>
    <p class="textstyle">
        Text.
    </p>
</blockquote>

我的第一个冲动是提取所有元素文本,然后以编程方式对其进行切片.我将监视Title1,Title2等,以了解何时开始行,然后发现“ —-”意味着没有值,只需跳过这一行并继续.但是,我意识到,可能有更好的方法直接使用xpath处理此问题.

如何用xpath解决这个问题,以便实质上给出每个单元格的最终子文本内容,而不是必须进入每个div(如果存在)?还是有更多类似xpath的方法来解决此问题?

显然,我正在尝试一种最灵活的解决方案,即使其他意外因素出现,这种解决方案也不会变得脆弱.

解决方法:

所提供的文本不是格式正确的XML文档,因此XPath不适用.

如果您将其更正并转换为格式良好的xml文档(如下所示),则这样的表达式可能会很有用:

/*/TABLE//TD//text()

甚至:

//TABLE//TD//text()

这是一个格式良好的XML文档,由提供的HTML构建:

<html>
    <p align="center">
        <img src="some_image.gif" alt="Some Title"/>
    </p>
    <TABLE WIDTH="500" BORDER="1" class="textwhite" ALIGN="center" CELLPADDING="0" CELLSPACING="0">
        <TR>
            <TD colspan="4" ALIGN="center">
                <b>Title</b>
            </TD>
        </TR>
        <TR>
            <TD ALIGN="center">Title</TD>
            <TD ALIGN="center">date</TD>
            <TD ALIGN="center">value</TD>
            <TD ALIGN="center">value</TD>
        </TR>
        <TR>
            <TD ALIGN="center">Title2</TD>
            <TD ALIGN="center"></TD>
            <TD ALIGN="center">
                <div class="redtext">----</div>
            </TD>
            <TD>&#xA0;</TD>
        </TR>
        <TR>
            <TD ALIGN="center">Title3</TD>
            <TD ALIGN="center">
                <div class="yellowtext">value</div>
            </TD>
            <TD ALIGN="center">
                <div class="redtext">value</div>
            </TD>
            <TD ALIGN="center">value
                <SUP>6</SUP>
            </TD>
        </TR>
        <TR>
            <TD ALIGN="center">Title4</TD>
            <TD ALIGN="center">
                <div class="bluetext">value</div>
            </TD>
            <TD ALIGN="center">
                <div class="redtext">value</div>
            </TD>
            <TD>&#xA0;</TD>
        </TR>
    </TABLE>
    <blockquote>
        <p class="textstyle">         Text.     </p>
    </blockquote>
</html>
上一篇:java-为什么JRuby不能识别BigNums而Ruby却不能识别BigNums?


下一篇:铁路上的ruby-产生大量机架应用的乘客