Я создаю XML-документ «на лету». и мне нужно знать XPath узла, который я только что создал. Я не вижу такой функции, как DOMNode::calculateXPath(void):string
, и я не хочу писать ее самостоятельно. есть ли какие-либо известные решения lite
?PHP Получение XPath DOMNode
ответ
Для данного узла нет определенного XPath, поскольку XPath является поисковым запросом. Как и в google, вы можете найти определенную страницу, используя разные условия поиска. Более того, запрос XPath, возвращающий текущий узел, может (вероятно, будет) изменяться при изменении дерева DOM, поэтому путь, который вы можете получить, действителен только до тех пор, пока не будет выполнена следующая модификация дерева.
Вы можете указать каждому из своих уникальных идентификаторов или имени класса (класс более безопасен, если вы хотите использовать другие идентификаторы - может быть несколько классов и только один ID). Затем вы можете выполнить поиск с использованием этого класса/id.
Пример для диапазона тега и класса unique_1_:
//span[contains(@class, 'unique_1_')]
Был аналогичный вопрос некоторое время назад, за который я отвечал что-то вдоль этих линий:
function calculateXPath(DOMNode $node)
{
$q = new DOMXPath($node->ownerDocument);
$xpath = '';
do
{
$position = 1 + $q->query('preceding-sibling::*[name()="' . $node->nodeName . '"]', $node)->length;
$xpath = '/' . $node->nodeName . '[' . $position . ']' . $xpath;
$node = $node->parentNode;
}
while (!$node instanceof DOMDocument);
return $xpath;
}
Как отметил Томаш, хотя, он определенно не такой надежный или перспективный, как использование id.
Я знаю, что это немного устарело, но я добавляю это на случай, если кто-то ищет это.
Начиная с PHP 5.2 существует DomNode::getNodePath()
, в котором продолжается DomElement
.
- 1. Получение объекта типа «DomNode» в php
- 2. Как запросить DOMNode с помощью XPath в PHP?
- 3. Найти положение индекса дочернего элемента DomNode/Xpath
- 4. Как выполнить запрос XPath на DOMNode?
- 5. slow php Перерывы манипуляции DOMNode
- 6. PHP DomNode insert before anything
- 7. PHP DOMNode сущности и nodeValue
- 8. PHP DOMNode :: hasAttributes проверяет сбой
- 9. DOMNode к DOMElement в PHP
- 10. Как создать DOMNode в PHP?
- 11. dijit.WidgetSet domNode
- 12. DomNode htmlunit
- 13. DOMNode :: getNodePath: оно учитывает пространство имен?
- 14. Преобразовать DOMDocument в DOMNode
- 15. Как получить innerHTML DOMNode?
- 16. Создание DOMDocument из DOMNode в PHP
- 17. PHP DOMNode nodeValue > & л выпуск
- 18. PHP: Удаление атрибута из объекта DOMNode
- 19. PHP: DOMNode :: appendChild для массива элементов
- 20. Добавить XML в DOMNode в PHP
- 21. PHP/XPath: Получение содержимого в вложенной диве
- 22. Xpath PHP ссылки
- 23. DomNode получить значение элемента
- 24. Соблюдать свойство DOMNode
- 25. XPath & Python - Получение валюты
- 26. Замените HTML в существующем DOMNode
- 27. DomDocument класс DOMNode неспособный доступ
- 28. Что может привести к тому, что DOMNode :: nodeValue будет пустым?
- 29. XPath получение текста из всех элементов, соответствующих запросу XPath
- 30. Расширение DOMDocument и DOMNode: проблема с объектом возврата
Я мог бы сделать это, используя ID.rather мою текущую версию осуществляется с помощью ID. Скорее я искал что-то еще. Я сделал другой поток для этого http://stackoverflow.com/questions/2644163/php-domxml-xpath-of-recursive-xpointer –