什么是XPATH表达式

时间:2012-03-15 08:17:29

标签: php xpath html-table

我有一个html文件,想要找到第二个TH内容为“Stn Code”和第三个TH内容为“Route No.”的表(在众多中)。什么是PHP中的XPATH表达式来获取这个特定的表:

<table cellpadding="0" cellspacing="0" border="0">
    <tbody>
        <tr class="heading_table_top">
            <th width="6%">SNo</th>
            <th width="9%">Stn Code</th>
            <th width="17%">Stn Name</th>
            <th width="9%">Route No.</th>
            <th width="9%">Arrival Time</th>
            <th width="9%">Dep. Time</th>
            <th width="15%">Halt Time (In Minutes)</th>
            <th width="9%">Distance</th>
            <th width="6%">Day</th>
            <th width="20%">Remark</th>

..................................

2 个答案:

答案 0 :(得分:1)

这应该有效:

//table/tbody/tr[th[2]='Stn Code'][th[3]='Route No.']/../..

编辑:我的第一次尝试选择了tr元素,这应该选择表格。

答案 1 :(得分:1)

无论内容包含哪个th,都会找到包含指定内容的表:

//table[descendant::th="Stn Code" and descendant::th="Route No."]
  

descendant axis包含上下文节点的后代;后代是孩子或孩子的孩子等等;因此后代轴永远不会包含属性或命名空间节点。

demo

如果您想确保内容位于特定的th元素中,请使用th[n],其中n是其中的位置,例如对于“Stn Code”的第二个TH内容和“Route No.”的第3个TH内容。。您使用th[2]th[3]。位置从1开始。

//table[descendant::th[2]="Stn Code" and descendant::th[3]="Route No."]

请注意,在您的示例标记“路线号”中在th[4]中,因此上述XPath不会在结果节点中生成表。

Also have a look at this XPath tutorial