Какое выражение XPATH для этого - PullRequest
2 голосов
/ 15 марта 2012

У меня есть html-файл, и я хочу найти таблицу (среди многих) со вторым содержимым TH «Stn Code» и третьим содержанием TH «Route No.». Каким будет выражение XPATH в php для получения этой конкретной таблицы:

<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 ]

1 голос
/ 15 марта 2012

Будет найдена таблица с указанным содержимым, независимо от того, какое th содержимое содержит:

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

ось потомка содержит потомков узла контекста;потомок - это ребенок или ребенок от ребенка и т. д .;таким образом, ось потомка никогда не содержит узлов атрибута или пространства имен.

demo

Если вы хотите убедиться, что содержимое содержит конкретные элементы th, используйтеth[n] где n - это позиция, например, для "второго TH-содержания" Stn Code "и 3-го TH-го содержимого" Route № ". Вы бы использовали th[2] и th[3]. Позиции основаны на 1.

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

Обратите внимание, что в вашем примере разметка "№ маршрута" находится в th[4], поэтому вышеуказанный XPath не будет создавать таблицу в результирующих узлах.

Также посмотрите этот учебник по XPath .

1 голос
/ 15 марта 2012

Это должно работать:

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

Редактировать: мое первое выражение выбрало элемент tr, это должно выбрать таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...