我的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