2009-10-20 48 views

回答

1

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。

1

所選答案對我來說不起作用,但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