xpath finding absolute path is there any easy way?

后端 未结 1 1201
难免孤独
难免孤独 2020-12-06 23:04

I have tried to find a way to \"bookmark\" an element on a page so i will later on be able to check on it. everything I\'ve tried so far lead me to some problem so I\'ve cam

相关标签:
1条回答
  • 2020-12-06 23:25

    You might be looking for DOMNode::getNodePath(). A quick example:

    $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";
    
    }
    

    And it's output:

    /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]
    
    0 讨论(0)
提交回复
热议问题