2017-08-24 76 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

相关问题