簡體   English   中英

保存將所有元素保存在與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>

我想用這樣的哈希將所有文本保存在文檔(嘿,測試,yoyo,大聲笑)中的類A和B中:

{ {"thing1", ["Hey","Test"]}, {"thing2", ["yoyo","lol"]} }

我該怎么辦? (即在摩擦中使用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

(這只是一個測試,我想將打印內容替換為“添加到哈希”)

對於具有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']"
....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM