У меня есть следующий html, и я использую класс DomDocument
php, чтобы получить элемент с id 'nextPageBtn' рядом с тегом скрипта. проблема в том, что мой запрос ничего не возвращает (как будто нет элемента с указанным id). heres html, который я разбираю.получить элемент, используя php DomDocument
<body>
<div style='float:left'><img src='../../../../includes/ph1.jpg'></div>
<label style='width: 476px; height: 40px; position: absolute;top:100px; left: 40px; z-index: 2; background-color: rgb(255, 255, 255);; background-color: transparent' >
<font size="4">1a. Nice to meet you!</font>
</label>
<img src='ENG_L1_C1_P0_1.jpg' style='width: 700px; height: 540px; position: absolute;top:140px; left: 40px; z-index: 1;' />
<script type='text/javascript'>
swfobject.registerObject('FlashID');
</script>
<input type="image" id="nextPageBtn" src="../../../../includes/ph4.gif" style="position: absolute; top: 40px; left: 795px; ">
</body>
и heres код php для его анализа.
$doc->loadHTMLFile($path);
$doc->encoding='UTF-8';
$x = new DOMXPath($doc);
$nextPage=$x->query("//*[@id='nextPageBtn']")->item(0);
if($nextPage)
{
echo 'found it..';
}
Я думаю, что линия «swfobject.registerObject (» FlashID «)» генерирует какую-то ошибку, которая уклоняется элемент можно найти?
Ваше выражение xpath выглядит действительным с первого взгляда. - И остальная часть вашего кода. Невозможно воспроизвести: http://codepad.viper-7.com/RUNGOd - возможно, вы смотрите не на то место. '$ doc-> encoding = 'UTF-8';' выглядит излишним для меня. – hakre
Если вы можете редактировать разметку обрабатываемого файла, я бы предложил просто дать идентификатор элементу, который вы хотите захватить, а затем getElementById(). – GordonM
Что @GordonM говорит: если XHTML имеет [DTD] (http://en.wikipedia.org/wiki/Document_Type_Definition), который указывает атрибут [ID] (http://www.theukwebdesigncompany.com/articles/xml -id-idref-dtd.php), 'getElementById' работает. – hakre