Путаница в Ruby REXML

Привет, я пытаюсь проанализировать данные из файла XML, который я экспортировал из инструмента командной строки mysql. Я следую руководству, расположенному здесь: http://www.germane-software.com/software/rexml/docs/tutorial.html для извлечения нужных мне данных, которые находятся в тегах

XML-ФАЙЛ:

<resultset statement='select count(id) as &apos;Builds/Month&apos; , 
 CONCAT(MONT HNAME(submittime), &apos;-&apos;,  
 YEAR(submittime)) as &apos;Month-Year&apos;fr om builds group by 
 YEAR(submittime), MONTH(submittime)'>   
 <row>
    <field name='Builds/Month'>11</field>
    <field name='Month-Year'>May-2010</field>   
 </row>
 <row>
    <field name='Builds/Month'>38</field>
    <field name='Month-Year'>June-2010</field>   </row>

  <row>
    <field name='Builds/Month'>35</field>
    <field name='Month-Year'>July-2010</field>   
  </row>
  <row>
    <field name='Builds/Month'>51</field>
    <field name='Month-Year'>August-2010</field>  
  </row>
  <row>
    <field name='Builds/Month'>10</field>
    <field name='Month-Year'>September-2010</field> 
  </row>
    ....
  </resultset>

И вот что я делаю:

doc = Document.new(File.new("month.xml"))
doc.elements.each("//row") {|e| puts e.attributes["field"]}

Но когда я делаю это, все, что я получаю, равно нулю для каждого экземпляра

Любая помощь будет здорово. Спасибо


person Hunter McMillen    schedule 28.06.2011    source источник


Ответы (2)


Я бы использовал для этого nokogiri - rexml всегда был проблемой, и у меня сложилось впечатление, что он выходит из употребления

person chrispanda    schedule 28.06.2011
comment
ах, я вижу, я выбрал это только потому, что это было в книге, которую я читал. Я все же посмотрю на нокогири. Спасибо. - person Hunter McMillen; 28.06.2011

Я предполагаю, что вы давно отказались от этого вопроса, но ваша проблема заключалась в том, что для ваших элементов «строки» не было атрибута «поле». Однако ваши элементы «поля» имеют атрибуты «имя».

Попробуй это:

doc.elements.each("//row/field") do {|e| puts e.attributes["name"] + ' : ' + e.text}

person D-D-Doug    schedule 23.04.2012