我的xml:
http://www.google.ru/ig/api?weather=车里雅宾斯克
<forecast_information>
<city data="Chelyabinsk, Province of Chelyabinsk"/>
</forecast_information>
例如如何获取城市数据?不是inner_html,只是城市数据、邮政编码等属性。
我的xml:
http://www.google.ru/ig/api?weather=车里雅宾斯克
<forecast_information>
<city data="Chelyabinsk, Province of Chelyabinsk"/>
</forecast_information>
例如如何获取城市数据?不是inner_html,只是城市数据、邮政编码等属性。
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 属性。city
city
选定的答案对我不起作用,但 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