小编ctr*_*tad的帖子

使用DOM和XPath从站点地图文件中删除节点

我正在尝试开发一个从我的站点地图文件中删除某些URL节点的功能.这是我到目前为止所拥有的.

$xpath = new DOMXpath($DOMfile);
$elements = $xpath->query("/urlset/url/loc[contains(.,'$pageUrl')]");
echo count($elements);
foreach($elements as $element){
    //this is where I want to delete the URL
    echo $element;
    echo "here".$element->nodeValue;
}
Run Code Online (Sandbox Code Playgroud)

哪个输出"111111".如果$ elements count为'1',我不知道为什么我不能在foreach循环中回显字符串.

到目前为止,我一直在做

$urls = $dom->getElementsByTagName( "url" );
foreach( $urls as $url ){
    $locs = $url->getElementsByTagName( "loc" );
    $loc = $locs->item(0)->nodeValue;
    echo $loc;
    if($loc == $fullPageUrl){
                   $removeUrl = $dom->removeChild($url);                
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我的站点地图不是那么大,哪种方法可以正常工作.它现在超时,所以我希望使用xpath查询会更快.

在戈登的评论之后,我尝试了:

$xpath = new DOMXpath($DOMfile);
$query = sprintf('/urlset/url[./loc = "%d"]', $pageUrl);
foreach($xpath->query($query) as $element) {
    //this is where I want …
Run Code Online (Sandbox Code Playgroud)

php xpath dom

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

dom ×1

php ×1

xpath ×1