【问题标题】:Nokogiri: How do you get the parent node of a DOM element when all you have is the string index of the element you want in the dom?Nokogiri:当你所拥有的只是你想要在 dom 中的元素的字符串索引时,你如何获得 DOM 元素的父节点?
【发布时间】:2011-12-11 04:39:13
【问题描述】:
这是我所拥有的:
- DOM 存储为文本
- 我有我想要获取其父节点的区域的字符串索引,该索引可能是也可能不是标签的开头(它永远不会是标签的一部分,因为它是用户选择
- 我在索引处也有 htmltext(显然)
据我所知:
doc = Nokogiri::HTML(content.body)
我知道 nokogiri 可以做 xpath 的事情,但我不知道 xpath 是否可以做标准的文本搜索?选择文本可以跨越多个节点,我认为这会破坏 xpath 搜索 o.o
我使用的是 Ruby 1.8.7 和 rails 2.3.8
【问题讨论】:
标签:
html
ruby
dom
xpath
nokogiri
【解决方案1】:
XML 文档的特定序列化中的索引与元素之间没有关联。你能做的最接近的:
递归地,在 DOM 的每一层,序列化元素并查看它的长度(添加到您目前的长度)是否已达到您的索引。
不幸的是,这并不能保证有效,因为:
描述同一 XML 文档的许多不同(非规范)序列化是可能的(例如 foo="You said, "Hi!"" 与 foo='You said, "Hi!"')。
根据您是否认为空白节点很重要,两个不同的 XML 文档可能会被视为相同(例如 <foo><bar> 与 <foo>\n\t<bar>)
在 HTML 中,可能会去除额外的非重要空白(例如 <p>a b</p> 与 <p>a b</p>)。