2014-11-05 125 views
3

由于XML数据:获取节点的父节点在XML的引入nokogiri护栏

<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,我应该得到是问题1其父节点。我使用的是引入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> 

请帮我解决它。谢谢。

回答

2

quest包含Nokogiri::XML::NodeSet,而不是一个Node。调用父节点集中的其中一个节点代替:

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