首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hpricot元素交集

Hpricot元素交集
EN

Stack Overflow用户
提问于 2009-06-29 14:43:00
回答 2查看 987关注 0票数 1

我想要从HTML页面中删除所有不满足特定条件(class = "int“或class = "ext")的图像(实际上是tinymce用户输入),并且我正在努力使用正确的方法。这就是我到目前为止正在做的事情:

代码语言:javascript
复制
hbody = Hpricot(input)
@internal_images = hbody.search("//img[@class='int']")
@external_images = hbody.search("//img[@class='ext']")

但我不知道如何找到类的值错误的图像(不是"int“或"ext")。

我还必须遍历元素以检查非标准html的其他属性(我使用它们来设置内部值,如在属性dbsrc中设置的DB id )。我也可以访问这些属性吗?当某些元素(在hpricot搜索结果中)不符合我的标准时,有没有办法删除它们?

谢谢你的帮忙!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-29 14:52:42

代码语言:javascript
复制
>> doc = Hpricot.parse('<html><img src="foo" class="int" /><img src="bar" bar="42" /><img src="foobar" class="int"></html>')
=> #<Hpricot::Doc {elem <html> {emptyelem <img class="int" src="foo">} {emptyelem <img src="bar" bar="42">} {emptyelem <img class="int" src="foobar">} </html>}>
>> doc.search("img")[1][:bar]
=> "42"
>> doc.search("img") - doc.search("img.int")
=> [{emptyelem img src"bar" bar"42"}]

一旦你有了搜索结果,你就可以使用普通的数组操作了。非标准属性可以通过[]访问。

票数 3
EN

Stack Overflow用户

发布于 2009-06-29 15:02:45

查看not CSS selector

代码语言:javascript
复制
(hbody."img:not(.int)")
(hbody."img:not(.ext)")

不幸的是,看起来你不能连接not表达式。您可能希望获取所有img节点,并删除那些.css选择器既不包含.int也不包含.ext的节点。此外,可以使用difference运算符来计算哪些元素不是这两个集合的一部分。

使用.remove方法删除节点或元素:Hpricot Altering文档。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1058716

复制
相关文章

相似问题

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