0

私のxml:

http://www.google.ru/ig/api?weather=チェリャビンスク

<forecast_information>
  <city data="Chelyabinsk, Province of Chelyabinsk"/>
</forecast_information>

たとえば、都市データを取得するにはどうすればよいですか? inner_html ではなく、都市データ、郵便番号などの属性のみです。

4

2 に答える 2

1

選択した答えは私にはうまくいきませんでしたが、xpathの部分は私を正しい軌道に乗せました。これは私が最終的に得たものです:

doc = Hpricot::XML(xml)
result = doc.at("//city")['data']

これが次のようなxml要素のrubyの完全なパーサーです:

  <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
于 2011-12-20T19:17:12.760 に答える
1

XPathは、XML を解析する際に非常に役立ちます。hpricot がサポートしているようで、信じられないほど簡単です。

data要素内の属性を抽出する XPath 式cityは次のとおりです。

/forecast_information/city/@data

data式は、 という名前の要素内で名前付きの属性(@記号が意味するもの)を見つけ、cityそれがさらに という名前の要素内にあることを示していますforecast_information

さて、google.ru でリンクした XML は、ここに投稿した例よりも複雑です。そこから同じ情報を抽出するには、次の式を使用します。

//city/@data

この式は、がソース XML のどこにあるかに関係なく、dataという名前の要素内で という名前の属性を見つけることを示しています。citycity

于 2009-10-20T13:48:02.323 に答える