2009-10-20 46 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