使用 hpricot 解析 XML,获取属性
我的 xml:
http://www.google.ru/ig/api?weather=Chelyabinsk
<forecast_information>
<city data="Chelyabinsk, Province of Chelyabinsk"/>
</forecast_information>
例如如何获取城市数据?不是inner_html,只是城市数据、邮政编码等属性。
My xml:
http://www.google.ru/ig/api?weather=Chelyabinsk
<forecast_information>
<city data="Chelyabinsk, Province of Chelyabinsk"/>
</forecast_information>
How to get city data for example? Not inner_html, just attributes like city data, postal code etc.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
XPath 在解析 XML 时会有很大帮助。看起来hpricot 支持它,所以它非常简单。
用于提取
city
元素内的data
属性的 XPath 表达式如下:该表达式表示,找到名为
data
的属性(这就是@
符号表示)位于名为city
的元素内,而该元素又位于名为forecast_information
的元素内。现在,您在 google.ru 上链接的 XML 比您在此处发布的示例更复杂。要从中提取相同的信息,请使用以下表达式:
该表达式表示,在名为
city
的元素中查找名为data
的属性,无论city 位于源 XML 中。
XPath will be a big help when parsing XML. Looks like hpricot has support for it, so it's incredibly easy.
The XPath expression to extract the
data
attribute inside acity
element is as follows:The expression says, find the attribute named
data
(that's what the@
sign means) inside the element namedcity
, which is in turn inside the element namedforecast_information
.Now, the XML you linked on google.ru is more complicated than the example you posted here. To extract the same information from it, use this expression:
This expression says, find the attribute named
data
inside the element namedcity
, no matter wherecity
is in the source XML.所选的答案对我不起作用,但 xpath 部分让我走上了正确的道路。这就是我最终得到的结果:
这是我在 ruby 中针对 xml 元素的完整解析器,如下所示:
The selected answer didn't work for me, but the xpath part put me on the right track. This is what I ended up with:
Here is my full parser in ruby for an xml element like this: