小编use*_*627的帖子

如何使用Nokogiri在NodeSet中添加子节点

我试图在根节点下添加子节点..我尝试了下面的xml,但这不起作用.我是Ruby和Nokogiri的新手

builder = Nokogiri::XML::Builder.with(@doc) do |xml|   
  nodes = Nokogiri::XML::NodeSet.new(@doc, [])   
  [].each {|nodes_one_by_one|  
    << nodes_one_by_one.Book  
    << nodes_one_by_one.Pen 
  }      
end  
Run Code Online (Sandbox Code Playgroud)

我需要像这样在根节点下面添加节点

<Catalog>
    <Book>abc</Book>
    <Book_Author>Benjamin</Book_author>
Run Code Online (Sandbox Code Playgroud)

这对我有用..但我真正需要的是在文档中的特定位置之后添加这些节点.

<Catalog>
    <!-- 
    <Book>abc</Book>
    <Book_Author>Benjamin</Book_author>
    -->
    <Interface></Interface>
    <Dialog></Dialog>
    <Manifest></Manifest>
</Catalog>
Run Code Online (Sandbox Code Playgroud)

我尝试使用at_xpath('// Catlog'),但它在元素的末尾添加(如你所说)

 <Catalog>
    <Interface></Interface>
    <Dialog></Dialog>
    <Manifest></Manifest>
     <!-- 
      <Book>abc</Book>
      <Book_Author>Benjamin</Book_author>
     -->
Run Code Online (Sandbox Code Playgroud)

book = Nokogiri::XML::Node.new('book', doc)
pen  = Nokogiri::XML::Node.new('pen', doc)     
.
.
Run Code Online (Sandbox Code Playgroud)

无论如何使用"each"循环而不是逐个添加..我试过这种方式,但这不起作用.

builder = Nokogiri :: XML :: Builder.with(doc)do | xml |
nodes = Nokogiri :: XML :: Node.new(doc,[])
[] .each {| child_list_element |
child_list_element.Book"value"child_list_element.Pen"value"child_list_element.Diary"value"child_list_element.Pen_stand"value"child_list_element.Pencil"value"...
}
end
doc << …

ruby xml nokogiri

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

nokogiri ×1

ruby ×1

xml ×1