как использовать Xpath с LibXml 2 - PullRequest
2 голосов
/ 03 января 2012

в этом адресе я пытаюсь очистить таблицу (это цена Ларга, которая выделена жирным красным цветом)

я использую LIBXML 2.2

, когда пытаюсьизвлеките тег через XPATH

// * [@ class = 'priceLarge']

это работает!

, но для упрощения запросов яхотел бы использовать FireBug в Firefox.

Использование FireBug дает мне этот XPath

/ html / body / div [2] / form / table [3] / tbody / tr/ td / div / table / tbody / tr [2] / td [2] / span / b

с использованием этого Xpath не работает, кажется, этот не дает полного запроса.Как я могу изменить этот XPath, чтобы очистить элемент?

1 Ответ

2 голосов
/ 03 января 2012

Firefox и другие браузеры генерируют теги tbody в HTML.

На самом деле, tbody, вероятно, не существует, поэтому вы можете удалить его в своем XPath.(/html/body/div[2]/form/table[3]/tr/td/div/table/tr[2]/td[2]/span/b) Вы можете проверить это, просто сохранив HTML-код из своего приложения и просмотрев его в текстовом редакторе.

Поскольку, как представляется, целью является получение информации с веб-страницы, ваше приложение, вероятно,быть более устойчивым к изменениям на веб-странице, если вы используете XPath менее зависимым от древовидной структуры (т. е. //b[@class='priceLarge']).

EDIT : кажется, что в дополнение к tbodyПроблема заключается в том, что Firefox отображает элемент div (ID: divsinglecolumnminwidth) как , содержащий элемент form (ID: handleBuy).

Просмотр HTML с помощью редактора XML показывает, чтоэлемент form является родственным элементом этого элемента div, поэтому выражение должно начинаться с /html/body/form/table[3].

Одним из многих инструментов для проверки выражений XPath является HAP Testbed .

...