获取xml-nokogiri-rails中节点的父节点

时间:2014-11-05 10:40:37

标签: ruby-on-rails

给出XML数据:

  <questionpaper>
   <question1>
      <id>540<id>
      <content>....</content>
   </question1>
   <question2>
      <id>550<id>
      <content>....</content>
   </question2>
   .
   .
   .
   <question10>
      <id>560<id>
      <content>....</content>
   </question10>

如果我给540 i,e id,我应该得到它的父节点是question1。我正在使用nokogiri并尝试过

   @qpid = Qpaper.find(params[:id])
   file = File.open(@qpid.qpaper_file)
   xml = Nokogiri::XML(file)
   quest = xml.search("//id[text()= '#{params[:qno]}']")     //params[:qno] gives id
   render text: quest.parent

给出错误

  undefined method `parent' for #<Nokogiri::XML::NodeSet:0xe603890>

请帮我解决。谢谢。

1 个答案:

答案 0 :(得分:3)

quest包含Nokogiri::XML::NodeSet,而不是Node。在节点集中的一个节点上调用parent:

quest = xml.search("//id[text()= '#{params[:qno]}']")
render text: quest.first.parent