Ruby 将所有元素保存在与xpath描述匹配的父项下
假设我有这样一份文件:Ruby 将所有元素保存在与xpath描述匹配的父项下,ruby,xpath,rexml,Ruby,Xpath,Rexml,假设我有这样一份文件: <div class='thing'> <td class='A'>Hey</td> <span class='B'>test</span> <td class='C'>asd</td> </div> <div class='thing'> <td class='A'>yoyo</td> <sp
<div class='thing'>
<td class='A'>Hey</td>
<span class='B'>test</span>
<td class='C'>asd</td>
</div>
<div class='thing'>
<td class='A'>yoyo</td>
<span class='B'>lol</span>
<td class='C'>aaaaaaaaaaaa</td>
</div>
我该怎么办?(我在rub中使用REXML和Xpath
例如,当我这样做时:
doc = Document.new(xmlfile)
parent = "//div[@class='thing']"
A = "//td[@class='A']"
B = "//span[@class='B']"
XPath.each(doc, parent) do |thing|
XPath.each(thing, A + "|" + B) do |children|
puts children.text
end
end
(这只是一个测试,我想用add to hash替换打印)
它为class=“thing”的每个元素打印整个文档中与A和B匹配的每个元素。因此输出为:
Hey
test
yoyo
lol
Hey
test
yoyo
lol
我想为每个class='thing'打印匹配A和B的子项:
Hey
test
yoyo
lol
这是一个典型的XPath错误。XPath表达式开头的
/
始终引用根文档。如果要执行相对XPath查询,并且需要使用/
启动表达式,则需要通过“预加”一个
,显式使表达式注意上下文元素:
....
A = ".//td[@class='A']"
B = ".//span[@class='B']"
....
....
A = ".//td[@class='A']"
B = ".//span[@class='B']"
....