保存 将所有元素保存在与 xpath 描述匹配的父项下
Save save all elements under a parent that matches xpath description
假设我有这样的文档:
<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>
而且我想将 classes A 和 B 中的所有文本保存在文档中(嘿,测试,yoyo,lol),比如这样的哈希:
{ {"thing1", ["Hey","Test"]}, {"thing2", ["yoyo","lol"]} }
我该怎么办? (我在 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
(这只是一个测试,我想用添加到哈希替换打印)
它打印 整个文档 中与 A 和 B 匹配的每个元素,对于 class="thing" 的每个元素。所以输出是:
Hey
test
yoyo
lol
Hey
test
yoyo
lol
我想要的是为每个 class='thing' 打印其匹配 A 和 B 的子项:
Hey
test
yoyo
lol
这是一个典型的 XPath 错误。 /
在 XPath 表达式的开头 总是 引用根文档。如果你打算做一个相对的 XPath 查询并且需要以 /
开始表达式,你需要通过 'prepending' a .
明确地使表达式注意上下文元素:
....
A = ".//td[@class='A']"
B = ".//span[@class='B']"
....
假设我有这样的文档:
<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>
而且我想将 classes A 和 B 中的所有文本保存在文档中(嘿,测试,yoyo,lol),比如这样的哈希:
{ {"thing1", ["Hey","Test"]}, {"thing2", ["yoyo","lol"]} }
我该怎么办? (我在 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
(这只是一个测试,我想用添加到哈希替换打印)
它打印 整个文档 中与 A 和 B 匹配的每个元素,对于 class="thing" 的每个元素。所以输出是:
Hey
test
yoyo
lol
Hey
test
yoyo
lol
我想要的是为每个 class='thing' 打印其匹配 A 和 B 的子项:
Hey
test
yoyo
lol
这是一个典型的 XPath 错误。 /
在 XPath 表达式的开头 总是 引用根文档。如果你打算做一个相对的 XPath 查询并且需要以 /
开始表达式,你需要通过 'prepending' a .
明确地使表达式注意上下文元素:
....
A = ".//td[@class='A']"
B = ".//span[@class='B']"
....