我正在創建一個XML文檔。我需要知道剛剛創建的節點的XPath。 我沒有看到像DOMNode::calculateXPath(void):string
這樣的功能,我不願意自己寫一個。有沒有任何已知的lite
第三方解決方案?PHP獲取DOMNode的XPath
3
A
回答
2
給定節點沒有確定的XPath,因爲XPath是一個搜索查詢。像谷歌一樣,您可以使用不同的搜索詞找到特定的頁面。更重要的是,當您修改DOM樹時,返回當前節點的XPath查詢可能會(可能會)發生更改,所以您可以獲得的路徑僅在下一次樹修改完成之前有效。
您可以爲每個節點分配唯一的ID或類名(當您想使用其他ID時,類可以更安全 - 可以有多個類並且只有一個ID)。然後你可以使用這個class/id進行搜索。
例標籤span和類unique_1_:
//span[contains(@class, 'unique_1_')]
3
也有類似的問題前一段時間,爲此我張貼類似的規定:
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;
}
正如托馬斯雖然提到,它絕對不如使用身份證明那樣健壯或有利於未來。
2
我知道這有點舊,但我加了這個以防萬一別人在找這個。
從PHP 5.2開始,有DomNode::getNodePath()
其中DomElement
延伸。
相關問題
- 1. 獲取插入DOMNode
- 2. 在php中獲取'DomNode'類型對象
- 3. 如何獲取DOMNode的innerHTML?
- 4. 從xpath定義構建DomNode
- 5. PHP DOMNode insertAfter?
- 6. 從PHP獲取值Xpath
- 7. Php xpath只獲取頭部
- 8. 如何在PHP中使用XPath查詢DOMNode?
- 9. PHP的DOMNode實體的nodeValue
- 10. PHP 5.2中的DOMDocument :: saveHTML($ domnode)?
- 11. 獲取文本TD Xpath的PHP
- 12. PHP的XPath - 獲取節點位置
- 13. 無法通過php獲取xpath的值
- 14. php xpath獲取div的內容與類
- 15. 在PHP中重命名DOMNode
- 16. PHP DOMNode :: hasAttributes檢查失敗
- 17. Php Xpath - 從代碼源獲取標題
- 18. 獲取屬性值SimpleXML Xpath PHP
- 19. PHP XPath:如何獲取元素內容?
- 20. 用特定文本PHP/XPath獲取DOMElement
- 21. php xpath - 獲取最後一個屬性
- 22. 如何從php xpath獲取數組?
- 23. XPath - 使用php xpath從父項中獲取文本
- 24. xpath獲取節點信息的xpath
- 25. 從一般xpath獲取精確的xpath
- 26. 使用PHP的DOM類替換DOMNode
- 27. 從PHP中的DOMNode創建DOMDocument
- 28. 緩慢的PHP DOMNode操作中斷
- 29. 對PHP DomNode nodeName行爲的更改
- 30. 查找DomNode/Xpath子元素的索引位置
我可以做到這一點使用ID.rather我目前使用的版本號已經完成。相反,我在尋找別的東西。我做了一個不同的線程http://stackoverflow.com/questions/2644163/php-domxml-xpath-of-recursive-xpointer – 2010-04-15 09:42:15