Php xpath查找绝对路径有什么简单的方法吗?

Php xpath查找绝对路径有什么简单的方法吗?,php,html,xpath,Php,Html,Xpath,我试图找到一种方法来“书签”页面上的一个元素,这样我以后就可以查看它了。到目前为止,我所做的一切都会让我遇到一些问题,因此我得出结论,找到绝对路径可能是唯一的方法 我一般不熟悉xpath或DOMdocument,因此可能会有命名错误,但绝对路径的意思是: “/html/body/div[1]/div[1]/div[2]/span[2]” 假设我使用: $element_with_something=$xpath->query('(//*[text()=“something”]) 这给了我一个元素

我试图找到一种方法来“书签”页面上的一个元素,这样我以后就可以查看它了。到目前为止,我所做的一切都会让我遇到一些问题,因此我得出结论,找到绝对路径可能是唯一的方法

我一般不熟悉xpath或DOMdocument,因此可能会有命名错误,但绝对路径的意思是:

“/html/body/div[1]/div[1]/div[2]/span[2]”

假设我使用:

$element_with_something=$xpath->query('(//*[text()=“something”])

这给了我一个元素。现在我的问题是有一个简单的方法找到它的绝对路径。如果没有。然后我可能不得不递归到树上

如果是,如何检查元素是否有父元素

我知道我可以使用
hasChildNodes()?或者用其他方法来打破它在树顶部碰到的递归?

您可能正在寻找。一个简单的例子:

$xml = <<<XML
<blaah1 name="whatever">
    <gender name="male">

        <example1 baseurl="male/86644/">
            <x u="lol.png"/>
            <x u="haha.png"/>
            <x u="name.png"/>
        </example1>

        <example2 baseurl="male/27827/">
            <x u="page.png"/>
            <x u="examp.png"/>
            <x u="bottom.png"/>
        </example2>
    </gender>
</blaah1>
XML;

$doc = new DOMDocument();
$doc->loadXML($xml);
$xp = new DOMXPath($doc);
foreach($xp->query('//node()') as $node ) {

    echo $node->getNodePath(), "\n";

}

是的,事实上,它看起来和你在问题中提到的差不多。还有别的,让我试试。你在这里使用HTML文档吗?我基本上是在拉页面并在上面定位价格。因此,我可以稍后检查它基本上任何一个页面与价格将工作。我试过了,看起来不错。是的,这是一个不错的选择。如果您需要在同一文档中添加书签,也可以在要添加书签的元素上设置ID属性(或者如果设置了ID属性,则可以获得该ID值)。javascript是否有与上述相同的功能?@NetMeta,这可以在纯XSLT中完成。见:
/blaah1
/blaah1/text()[1]
/blaah1/gender
/blaah1/gender/text()[1]
/blaah1/gender/example1
/blaah1/gender/example1/text()[1]
/blaah1/gender/example1/x[1]
/blaah1/gender/example1/text()[2]
/blaah1/gender/example1/x[2]
/blaah1/gender/example1/text()[3]
/blaah1/gender/example1/x[3]
/blaah1/gender/example1/text()[4]
/blaah1/gender/text()[2]
/blaah1/gender/example2
/blaah1/gender/example2/text()[1]
/blaah1/gender/example2/x[1]
/blaah1/gender/example2/text()[2]
/blaah1/gender/example2/x[2]
/blaah1/gender/example2/text()[3]
/blaah1/gender/example2/x[3]
/blaah1/gender/example2/text()[4]
/blaah1/gender/text()[3]
/blaah1/text()[2]