在XPath中,如何按文本选择一个节点,无论哪个文本孩子有它?

时间:2015-11-04 22:19:40

标签: c# html xml xpath

我有一些像这样的HTML代码:

<table>
    <tbody>
        <tr>
            <td> John
            <font color="red">
            <b>Unemployed</b>
            </font>
            <br/>ID 12345<b>
            some Text</b>
            <br/>
            </td>
        </tr>
    </tbody>
</table>

代码中还有一些tr,但这只是一个例子 我想选择具有特定ID文本的td节点,因此在这种情况下将为12345。

我可以使用以下XPath访问ID:

HTML/TABLE/descendant::*[contains(text()[3], '12345')]

但我想避免使用索引[3]。我也试过

HTML/TABLE/descendant::*[contains(., '12345')] 

但是选择了tbody

知道怎么做吗?

2 个答案:

答案 0 :(得分:2)

在XPath中,无论文本孩子有哪个文本都按文本选择节点,请使用public class HomeController : Controller { [Activate] public TimeService TimeService { get; set; } } //contains()

.

<强>解释

  • //td[contains(., '12345')] 选择文档中的所有//td元素。
  • td 条件 //td[将选择限制为满足条件]
  • td是当前节点(.);在td内,它是当前节点的字符串值

    contains()
  • John Unemployed ID 12345 some Text ,给定上面的字符串值contains(),确实包含“12345”,因此评估为true,而不必按要求指定确切的文本节点。

答案 1 :(得分:0)

//td[ contains(., '12345' ) ]怎么样?

适合我。这就是你想要的吗?