0

我的xml:

http://www.google.ru/ig/api?weather=车里雅宾斯克

<forecast_information>
  <city data="Chelyabinsk, Province of Chelyabinsk"/>
</forecast_information>

例如如何获取城市数据?不是inner_html,只是城市数据、邮政编码等属性。

4

2 回答 2

1

XPath将在解析 XML 时提供很大帮助。看起来hpricot 支持它,所以它非常容易。

提取元素data内部属性的 XPath 表达式city如下:

/forecast_information/city/@data

表达式说,在元素 named 中找到属性 named data(这就是@符号的意思),而元素city又在元素 namedforecast_information中。

现在,您在 google.ru 上链接的 XML 比您在此处发布的示例更复杂。要从中提取相同的信息,请使用以下表达式:

//city/@data

此表达式表示,无论在源 XML 中的什么位置,都在data元素 named中找到 named 属性。citycity

于 2009-10-20T13:48:02.323 回答
1

选定的答案对我不起作用,但 xpath 部分让我走上了正确的轨道。这就是我最终的结果:

doc = Hpricot::XML(xml)
result = doc.at("//city")['data']

这是我在 ruby​​ 中针对这样的 xml 元素的完整解析器:

  <Response Field1="abc" Field2="123">

  def parse(xml)
    vars = {}
    fields = %w[Field1 Field2 Field3]
    doc = Hpricot::XML(xml)
    for field in fields
      vars[field] = doc.at("//Response")[field]
    end
    return vars
  end
于 2011-12-20T19:17:12.760 回答