我的xml:
http://www.google.ru/ig/api?weather=Chelyabinsk
<forecast_information>
<city data="Chelyabinsk, Province of Chelyabinsk"/>
</forecast_information>
如何获取城市数据?不是inner_html,只是像城市数据,邮政编码等属性。
答案 0 :(得分:1)
XPath将是一个很大的帮助。看起来像hpricot has support for it,所以非常容易。
用于提取data
元素内的city
属性的XPath表达式如下:
/forecast_information/city/@data
表达式说,在名为data
的元素中找到名为@
的属性(这就是city
符号的含义),该属性又位于名为{{1}的元素内部}。
现在,您在google.ru上链接的XML比您在此处发布的示例更复杂。要从中提取相同的信息,请使用以下表达式:
forecast_information
这个表达式说,在名为//city/@data
的元素中找到名为data
的属性,无论源XML中的city
在哪里。
答案 1 :(得分: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