2009-10-20 2 views

ответ

1

XPath будет большой помощью при анализе XML. Похож на hpricot has support for it, так что это невероятно просто.

Выражение XPath для извлечения атрибута data внутри city элемента следующим образом:

/forecast_information/city/@data 

Выражение говорит, найти атрибут с именем data (это то, что означает, что @ знак) внутри элемента с именем city, который, в свою очередь, находится внутри элемента с именем forecast_information.

Теперь XML, который вы связали на google.ru, сложнее, чем приведенный здесь пример. Для того, чтобы извлечь ту же информацию из него, используйте это выражение:

//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 
Смежные вопросы