如何将xml转换为Elixir中的地图?

时间:2016-11-17 08:59:23

标签: xml xml-parsing elixir

Rails使用from_xml扩展Hash

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}}

我很难找到任何有关如何以相对简单的方式在Elixir中执行此操作的示例。

类似的东西:

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

2 个答案:

答案 0 :(得分:0)

尝试使用sweet_xml。您可以使用xmap函数和xpath的基本用法从xml文档返回映射。这是一个example

答案 1 :(得分:0)

我查看了sweet_xml,它有一些很好的标记来提取特定的数据模式。我的问题是,为了指定我需要的所有路径,我需要一个非常详细的设置。

我还查看了Quinn,它将xml解析为可以搜索的其他数据结构。与地图相比,我发现中间数据结构有点奇怪。

另一个问题是这两个库都使用xmerl,它看起来像是从它正在解析的xml中创建新的原子。

我决定抓住自己的痒作为练习,看看我是否可以创建我的第一个十六进制包: https://github.com/homanchou/elixir-xml-to-map

它在幕后使用了erlsom erlang库,它说它使用了字符串键,我觉得它更好。

鉴于对这个问题的回答,即使考虑使用这种天真的方法显然也是非常禁忌,所以请谨慎使用。自述文件详述了缺点。