Руби REXML путаница - PullRequest
1 голос
/ 28 июня 2011

Привет! Я пытаюсь проанализировать данные из файла 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"]}

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

Любая помощьбыло бы замечательно.Спасибо

Ответы [ 2 ]

1 голос
/ 24 апреля 2012

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

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

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

0 голосов
/ 28 июня 2011

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

...