Skip to content

Converts XML String to Elixir Map data structure with string keys

Notifications You must be signed in to change notification settings

Vic-ai/elixir-xml-to-map

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

XmlToMap

Creates an Elixir Map data structure from an XML string

Usage:

XmlToMap.naive_map("<foo><bar>123</bar></foo>")

Results in:

%{"foo" => %{"bar" => "123"}}

Converts xml string to an Elixir map with strings for keys.

This tool is inspired by Rails Hash.from_xml() but is "naive" in that it is convenient (requires no setup) but carries the same drawbacks. Use with caution.

XML and Maps are non-isomorphic. Attributes on some nodes don't carry over if the node has just one text value (like a leaf). Naive map has no validation over what should be a collection. If and only if nodes are repeated at the same level will they beome a list.

XmlToMap.naive_map("<foo><point><x>1</x><y>5</y></point><point><x>2</x><y>9</y></point></foo>")

# => %{"foo" => %{"point" => [%{"x" => "1", "y" => "5"}, %{"x" => "2", "y" => "9"}]}}

Depends on Erlsom to parse xml then converts the 'simple_form' structure into a map.

I prefer Erlsom because it is the best documented erlang xml parser and because it mentions that it does not produce new atoms during the scanning.

See tests for example usage.

Installation

If available in Hex, the package can be installed as:

  1. Add elixir_xml_to_map to your list of dependencies in mix.exs:
```elixir
def deps do
  [{:elixir_xml_to_map, "~> 0.1"}]
end
```
  1. Ensure elixir_xml_to_map is started before your application:
```elixir
def application do
  [applications: [:elixir_xml_to_map]]
end
```

About

Converts XML String to Elixir Map data structure with string keys

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Elixir 100.0%