【问题标题】:XmlSimple - using xml_in() to parse data in Ruby on RailsXmlSimple - 使用 xml_in() 在 Ruby on Rails 中解析数据
【发布时间】:2011-11-28 20:51:30
【问题描述】:

我有一个像这样的简单 XML 文件:

    <Course>
     <CompanyName value="Ford"/>
     <DepartmentName value="assessments"/>
     <CourseName value="parts"/>
     <Result>
      <CoreData>
      <Status value="completed"/>

在我的控制器中,我有:

    def xml_facil
      require 'xmlsimple'
      config = XmlSimple.xml_in("#{Rails.root}/doc/TestResults/Ford/assessments/mike.xml", { 'KeyAttr' => 'value' })
      @results = config['CourseName']
    end

在我看来,我有:

    <%= render @results %>

但我得到的错误是:

    undefined method `formats' for nil:NilClass

我想我的方法在这里返回 nil 那么我该如何解决这个问题,以便我的视图将呈现“部分”?任何帮助表示赞赏!

【问题讨论】:

  • 我认为它返回 nil 因为 XmlSimple() 没有读取“CourseName”标签中的值键。我切换到 Nokogiri 并使用了类似的方法,它在视图中呈现了 。现在我需要弄清楚如何只捕获没有标签的“parts”字符串。有什么建议吗?

标签: ruby-on-rails ruby xml hash xml-simple


【解决方案1】:

既然你已经切换到 Nokogiri,你可以用这个挖掘出你感兴趣的 value 属性:

require 'nokogiri'
doc   = Nokogiri::XML(open("#{Rails.root}/doc/TestResults/Ford/assessments/mike.xml").read)
value = doc.at('CourseName').attr('value')

【讨论】:

  • 这行得通 - 感谢您的所有帮助。控制器方法现在是 doc.xpath('//Course').map do |i| {'CourseName' => i.xpath('CourseName').attr('value')} 结束
猜你喜欢
  • 1970-01-01
  • 2019-06-11
  • 1970-01-01
  • 1970-01-01
  • 2019-03-31
  • 1970-01-01
  • 2013-04-16
  • 2010-12-22
  • 1970-01-01
相关资源
最近更新 更多