1

您好我正在尝试从我从 mysql 命令行工具导出的 XML 文件中解析数据。我正在关注位于此处的教程: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"]}

但是当我这样做时,我得到的所有实例都是 nil

任何帮助都会很棒。谢谢

4

2 回答 2

1

我猜你很久以前就放弃了这个问题,但你的问题是你的“行”元素没有属性“字段”。但是,您的“字段”元素确实具有“名称”属性。

试试这个:

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

于 2012-04-23T20:22:51.600 回答
-1

我会为此使用 nokogiri - rexml 我总是发现这是一个问题,我的印象是它已经不再使用了

于 2011-06-28T18:24:39.987 回答