php - 使用 PHP DOMXpath 遍历子节点?

标签 php dom xpath domxpath

我在理解子节点中到底存储了什么时遇到了一些问题。理想情况下,我想在每个子节点上执行另一个 xquery,但似乎无法弄清楚。这是我的场景: 数据:

<div class="something">
    <h3>
        <a href="link1.html">Link text 1</a>
    </h3>
    <div class"somethingelse">Something else text 1</div>
</div>
<div class="something">
    <h3>
        <a href="link2.html">Link text 2</a>
    </h3>
    <div class"somethingelse">Something else text 2</div>
</div>
<div class="something">
    <h3>
        <a href="link3.html">Link text 3</a>
    </h3>
    <div class"somethingelse">Something else text 3</div>
</div>

还有代码:

$html = new DOMDocument();
$html->loadHtmlFile($local_file);
$xpath = new DOMXPath( $html );
$nodelist = $xpath->query( "//div[@class='something']");
foreach ($nodelist as $n) {
    Can I run another query here? }

对于“某物”的每个元素(即 $n),我想访问两段文本和 href 的值。我尝试使用 childNode 和另一个 xquery 但无法正常工作。任何帮助将不胜感激!

最佳答案

是的,您可以运行另一个 xpath 查询,类似这样:

foreach ($nodelist as $n)
{
    $other_nodes = $xpath->query('div[@class="somethingelse"]', $n);

    echo $other_nodes->length;
}

这将为您提供带有类 somethingelse 的内部 div,$xpath->query 方法的第二个参数告诉查询将此节点作为上下文,查看更多 http://fr2.php.net/manual/en/domxpath.query.php

关于php - 使用 PHP DOMXpath 遍历子节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7896943/

相关文章:

html - 使用 css 隐藏表中的元素 tr

xpath - Mule 使用 XPath 从有效负载中返回值

jquery - 我可以使用 jQuery 选择具有 XPath 属性模式的 DOM 节点吗?

python - 如何使用 lxml 和 XPATH 在单个查询中检索所有子节点

php - 如何设置列自动获取而不直接在php中的excel表格代码中给出

php - 使用 htaccess 传递 URL

php - Laravel 中 $errors 的含义是什么

javascript - D3 稳定排序模拟

php - 替代 iframe 来提供购买者信息并允许购买者输入商品是否是在其他网站上购买的?

c++ - QDomNode 到 html