2012-10-25 66 views
2

我使用Nokogiri解析XML。如何檢索nokogiri處理指令屬性?

我能夠檢索樣式表。但不是每個樣式表的屬性。

1.9.2p320 :112 >style = xml.xpath('//processing-instruction("xml-stylesheet")').first 
=> #<Nokogiri::XML::ProcessingInstruction:0x5459b2e name="xml-stylesheet"> 
style.name 
=> "xml-stylesheet" 
style.content 
=> "type=\"text/xsl\" href=\"CDA.xsl\"" 

是否有任何簡單的方法來獲取類型,href屬性值?

OR

唯一的辦法就是解析處理指令的內容(style.content)?

+0

這將有助於如果你包括你正試圖解析的XML的簡短示例。 –

回答

3

我按照以下答案中的說明解決了這個問題。

Can Nokogiri search for "?xml-stylesheet" tags?

增加了新的to_element方法引入nokogiri :: XML ::的ProcessingInstruction類

class Nokogiri::XML::ProcessingInstruction 
    def to_element 
    document.parse("<#{name} #{content}/>") 
    end 
end 

style = xml.xpath('//processing-instruction("xml-stylesheet")').first 
element = style.to_element 

要獲取href屬性值

element.attribute('href').value 
1

你不能這樣做嗎?

style.content.attribute['type'] # or attr['type'] I am not sure 
style.content.attribute['href'] # or attr['href'] I am not sure 

檢查這個問題How to access attributes using Nokogiri

+0

這給了我未定義的方法屬性或attr字符串錯誤。 –

+0

感謝您的回覆 –