2017-08-24 89 views
0

這是我在做什麼:如何在Nokogiri的XML根節點之前添加註釋?

xml = Nokogiri::XML('<hello/>') 
xml.root.add_previous_sibling(
    Nokogiri::XML::Comment.new(
    xml, '<!-- how are you? -->' 
) 
) 

這就是我想要實現:

<?xml version="1.0"?> 
<!-- how are you? --> 
<hello/> 

我越來越:

ArgumentError: A document may not have multiple root nodes. 

什麼是正確的辦法?

回答

1

應在xml.children節點集內添加註釋。
下面是一個例子:

xml = Nokogiri::XML('<hello/>') 
=> #<Nokogiri::XML::Document:0x3fe1db8d0ed0 name="document" children=[#<Nokogiri::XML::Element:0x3fe1db8d0584 name="hello">]> 

xml.children.before(Nokogiri::XML::Comment.new(xml, 'how are you?')) 
=> #<Nokogiri::XML::Element:0x3fe1db8d0584 name="hello"> 

xml.to_s 
=> "<?xml version=\"1.0\"?>\n<!--how are you?-->\n<hello/>\n" 
+0

我得到相同的異常...引入nokogiri 1.8.0 – yegor256

+0

你確定你的版本是1.8.0?我嘗試了1.7.0.1,得到和你一樣的錯誤,但是當我用1.8.0運行這個時,我沒有任何錯誤消息。 1.8.0版本已更新以避免此類錯誤。 – iskvmk

+0

你說得對,1.8.0完美,謝謝。 – yegor256