簡體   English   中英

如何在 Elixir 中將 xml 轉換為地圖?

[英]How to convert xml to a map in 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}}

我查看了 sweet_xml,它有一些很好的符號可以提取特定的數據模式。 我的問題是,它需要我進行非常詳細的設置才能指定我需要獲取的所有路徑。

我還查看了 Quinn,它將 xml 解析為其他一些可以搜索的數據結構。 與地圖相比,我發現使用中間數據結構有點奇怪。

另一個問題是這兩個庫都使用了 xmerl,看起來它從正在解析的 xml 中創建了新的原子。

我決定將自己的癢作為練習,看看我是否可以創建我的第一個十六進制包: https ://github.com/homanchou/elixir-xml-to-map

它在幕后使用 erlsom erlang 庫,它說它使用字符串鍵,我認為這更安全,因為原子不會被垃圾收集。

鑒於對這個問題的回答,甚至考慮使用這種幼稚的方法顯然是極其禁忌的,因此請謹慎使用。 自述文件詳細說明了缺點。

嘗試使用sweet_xml 您可以使用xmap函數和 xpath 的基本用法從 xml 文檔返回地圖。 這是一個例子

還有一種基於SAX (XML 的簡單 API)算法的工具: https ://github.com/xinz/sax_map

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM