2016-11-17 1 views
-3

Railsのfrom_xmlxmlをエリクシルの地図に変換するには?

xml = <<-XML 
    <?xml version="1.0" encoding="UTF-8"?> 
    <hash> 
     <foo type="integer">1</foo> 
     <bar type="integer">2</bar> 
    </hash> 
XML 

hash = Hash.from_xml(xml) 
# => {"hash"=>{"foo"=>1, "bar"=>2}} 

でハッシュ拡張Iは、比較的簡単な方法でエリクサーでこれを行う方法のための任意の例を見つけるのに苦労しています。

ような何か:

Map.from_xml(xml) 
# => %{"hash" => %{"foo" => 1, "bar" => 2}} 
+4

'from_xml'は、正しく動作しなかった薄れた欠陥のある試みです(http://apidock.com/rails/Hash/from_xml/class#1280-Looks-like-this-method-has-trouble-with-なぜなら、同形写像xml⇒ハッシュは存在しないからです。なぜあなたはエリクサーに何もないことを期待していますか? xml解析ライブラリのいずれかを使用してXMLを解析し、結果の構造で作業します。 – mudasobwa

+0

あなたは正しいです、それは同形ではありません。しかし、場合によっては、期待されるXMLには属性が含まれておらず、純粋なマップであっても、xpathに到達するのがより簡単です。 – Homan

答えて

0

​​を使用してみてください。 xmap関数とxpathの基本的な使い方を使用して、xmlドキュメントからマップを返すことができます。ここにはexampleがあります。

0

私はsweet_xmlを見ました。これには、特定のパターンのデータを引き出すための素晴らしい印があります。私の問題は、それは私が得る必要があるすべてのパスを指定するために私の部分でかなり詳細なセットアップが必要です。

また、xmlを検索して他のデータ構造にパーズするQuinnを見ました。中間データ構造は地図と比べて少し奇妙です。

もう1つの問題は、両方のライブラリでxmerlが使用されていることです。xmerlは解析中のxmlから新しいアトムを作成するようです。

私は私ができるかどうかを確認し、私の最初の六角パッケージを作成するための練習として自分のかゆみをスクラッチすることを決めた: https://github.com/homanchou/elixir-xml-to-map

それはそれではなく、文字列キーを使用していることを述べている舞台裏erlsomのErlangのライブラリを使用して、私はそれが良いと思う。

この質問への回答を考えれば、この素朴なアプローチを使用することを検討するのは明らかに非常にタブーなので、慎重に使用してください。 Readmeには、欠点が詳しく説明されています。

関連する問題