首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从外部页面获取div,然后从其中删除另一个div。

从外部页面获取div,然后从其中删除另一个div。
EN

Stack Overflow用户
提问于 2014-06-06 23:40:55
回答 1查看 48关注 0票数 1

我需要一点帮助,从外部网页获取内容。

我需要一个div,然后从里面删除另一个div。这是我的密码,有人能帮我吗?

这是我的XML代码的相关部分:

代码语言:javascript
复制
<html>
    ...
    <body class="domain-4 page-product-detail" > ...

         <div id="informacio" class="htab-fragment"> <!-- must select this -->
            <h2 class="description-heading htab-name">Utazás leírása</h2>
            <div class="htab-mobile tab-content">
                <p class="tab-annot">* Hivatalos ismertető</p>

                <div id="trip-detail-question"> <!-- must delete this -->
                    <form> ...</form>
                </div>

                <h3>USP</h3><p>Nagy, jól szervezett és családbarát ...</p>
                <div class="message warning-message">
                    <p>Az árak már minden aktuális kedvezményt tartalmaznak!</p>
                    <span class="ico"></span>
                </div>
            </div>
        </div>
        ... 
    </body>
</html>

我需要获得divid="informacio",在此之后,我需要从其中删除div id="trip-detail-question",包括它包含的表单。

这是我的代码,但它不能正常工作:

代码语言:javascript
复制
function get_content($url){

    $doc = new DOMDocument;

    $doc->preserveWhiteSpace = false;
    $doc->strictErrorChecking = false;
    $doc->recover = true;

    $doc->loadHTMLFile($url);

    $xpath = new DOMXPath($doc);

    $query = "//div[@id='informacio']";
    $entries = $xpath->query($query)->item(0);

    foreach($xpath->query("div[@id='trip-detail-question']", $entries) as $node)
        $node->parentNode->removeChild($node);

    $var = $doc->saveXML($entries);
    return $var;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-07 01:09:30

第二个XPath表达式不正确。它尝试在您之前选择的作为子节点的div上下文中选择一个div。您正在尝试选择:

代码语言:javascript
复制
//div[@id='informacio']/div[@id='trip-detail-question']

而且那个节点不存在。您想要这个节点:

代码语言:javascript
复制
//div[@id='informacio']/div/div[@id='trip-detail-question']

您也可以这样选择它(允许任何元素,而不仅仅是div):

代码语言:javascript
复制
//div[@id='informacio']/*/div[@id='trip-detail-question']

或者(允许多个嵌套级别)

代码语言:javascript
复制
//div[@id='informacio']//div[@id='trip-detail-question']

在第一个div的上下文中,正确的XPath表达式是:

代码语言:javascript
复制
.//div[@id='trip-detail-question']

如果您在代码中更改了它,它应该可以工作:

代码语言:javascript
复制
foreach($xpath->query(".//div[@id='trip-detail-question']", $entries) as $node)
    $node->parentNode->removeChild($node);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24092132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档