我的XML:解析XML与角度来说,Hpricot,获取属性
http://www.google.ru/ig/api?weather=Chelyabinsk
<forecast_information>
<city data="Chelyabinsk, Province of Chelyabinsk"/>
</forecast_information>
如何获得城市数据的例子吗?不是inner_html,只是诸如城市数据,邮政编码等属性。
我的XML:解析XML与角度来说,Hpricot,获取属性
http://www.google.ru/ig/api?weather=Chelyabinsk
<forecast_information>
<city data="Chelyabinsk, Province of Chelyabinsk"/>
</forecast_information>
如何获得城市数据的例子吗?不是inner_html,只是诸如城市数据,邮政编码等属性。
XPath在解析XML时会有很大的帮助。看起来像hpricot has support for it,所以它非常简单。
的XPath表达式提取city
元素内的data
属性如下:
/forecast_information/city/@data
表达说,找到名为data
属性(这是什么@
号表示)命名city
的元素中,它又在名为forecast_information
的元素内。
现在,您在google.ru上链接的XML比您在此处发布的示例更复杂。从中提取相同的信息,使用此表达式:
//city/@data
这个表达式说,找到名为data
命名为city
里面的元素属性,无论身在何处city
是在源XML。
所选答案对我来说不起作用,但xpath部分让我走上了正确的轨道。这是我结束了:
doc = Hpricot::XML(xml)
result = doc.at("//city")['data']
这是我在红宝石完全解析器像这样的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