我可以使用 DOMXPath 在 Li 类中提取图像源吗? [复制]

Posted

技术标签:

【中文标题】我可以使用 DOMXPath 在 Li 类中提取图像源吗? [复制]【英文标题】:Can I extract image sources within an Li class using DOMXPath? [duplicate] 【发布时间】:2012-06-16 15:51:34 【问题描述】:

可能重复:Selecting a css class with xpath

我正在尝试提取像这样的 html 中所有图像的源代码

    <li class="carousel_item">
    <img src="http://www.xxxx.com/1fc1c1c2db5852e08ffcff38.jpg" 
                         
                         

                        style="margin-bottom:1px" 
                        class="image_error" /> 
                    <span class="image_error" title="jpg"></span> 
                    <span class="image_error" title="2.jpg"></span> 
                </li> 

当我使用以下命令时,我会获取文档中的所有图像

   $nodelist = $xpath->query( "//img/@src" );
   foreach ($nodelist as $n)
    echo  $n->nodeValue."<br>";
 

但我只想要 class="carousel_item" 中列出的项目

这可能吗?

【问题讨论】:

是的,有可能。您具体想知道什么? 【参考方案1】:

当然,只需在查询中包含&lt;li&gt; 及其类属性即可。您只需要将 xpath 字符串更改为:

$nodelist = $xpath->query( "//li[@class='carousel_item']/img/@src" );

Demo

【讨论】:

谢谢先生,完美运行。 HTML 中的 class 属性是一个空格分隔的列表,这使它变得不那么琐碎。从技术上讲,您在这里回答的内容一定没有错,但也一定不是对的。 @hakre - 好点子 - 如果是这种情况 user1197941,您必须用 bsdnoobz 刚刚指出的 contains() 函数替换类选择器。 嗯,@bsdnoobz 的回答有点快,所以也很短。你想知道全部真相吗?这是我的博客文章,解释了CSS Selector to XPath conversion 的详细信息,这里是 xpath://*['P' = translate(name(.), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')]/@*['CLASS' = translate(name(.), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ') and contains(concat(' ', normalize-space(.), ' '), concat(' ', 'intro', ' '))] - 这是一个 P 元素与类 intro @hakre - 非常有趣的阅读!刚刚收藏了,谢谢你的信息【参考方案2】:
$nodelist = $xpath->query('//li[contains(@class, "carousel_item")]/img/@src');

【讨论】:

以上是关于我可以使用 DOMXPath 在 Li 类中提取图像源吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用 DOMXPath 在 <p> 标记内保留换行符?

PHP DOMXPath 查询使用元素的 innerHTML/nodeValue 来查找并返回该元素

codeception 中的 fillField 方法不起作用抛出 DOMXPath::query(): Invalid expression

在奇数位置提取列表元素

Easymodbus 在 Quartz.net 类中给出连接错误

ul和分配类中li的数量