Как создать XPATH для элемента HTML DOM?

Как создать XPATH для элемента HTML DOM? например, "/HTML/BODY/DIV [1]/TABLE [1]/TR [2]/TD [1]/INPUT".

Учитывая элемент DOM, как получить эту строку XPATH? Любые идеи?

Спасибо,

Dattebayo.

Ответ 1

Вы можете создать новый domdocument и затем импортировать элемент node

$DD= new DOMDocument('1.0', 'utf-8');
$DD->loadXML( "<html></html>" );
$DD->documentElement->appendChild($DD->importNode($DE,true));

то вы можете использовать xpath в купе:

$xpathe=new DOMXPath($DD);

Ответ 2

Насколько я помню, расширение xpath checker для firefox дает вам интерфейс "точка-и-щелчок" для получения элементов xpath для элементов DOM в HTML-документ.

Ответ 3

После большой борьбы я нашел способ сделать это.

Наряду с DOM-контуром также используйте SourceIndex каждого node. Как "/Html: 1/Тело: 2/Div: 5/Вход: 6"

Но опять же, 1. Это может не работать в случае динамической страницы (ajax для изменения содержимого). 2. Это может быть не уникальным по сравнению с браузерами, поскольку sourceIndex может варьироваться в зависимости от браузеров на основе механизма рендеринга браузера, который упорядочивает узлы. (не уверенный в этом, хотя, только мысль).

Ответ 4

В Mozilla был реализован компонент xpath generator, хотя он никогда не делал его по умолчанию.

Вы можете найти тесты в "финальном патче", прикрепленные к ошибке, с которой я связан, чтобы увидеть, как ее можно использовать. Вы также можете посмотреть его реализацию, может быть полезно.