XMax

Build Status

XML to Map converter.

XMax transforms an XML string into a Map containing a collection of pairs where the key is the node name and the value is its content.

XMax was originally forked from XMap. There are 2 notable difference between the packages:

  1. XMax will also map xml attributes. This does however cause for larger mapped objects. Attributes are mapped to the "$" key, while contents are mapped to the "_" key. If you know you're never going to need xml attributes, XMap may be a better fit.

  2. XMax does not support atom keys, it's usually not a good idea to generate atoms on the fly. So to prevent unexpected memory leaks, this feature has been ommitted

Examples

Here is an example:

      iex> xml = """
      ...> <?xml version="1.0" encoding="UTF-8"?>
      ...> <blog>
      ...>   <post>
      ...>     <title>Hello Elixir!</title>
      ...>   </post>
      ...>   <post>
      ...>     <title>Hello World!</title>
      ...>   </post>
      ...> </blog>
      ...> """
      iex> XMax.from_xml(xml)
      %{
        "blog" => %{
          "$" => %{},
          "_" => %{
            "post" => [
              %{
                "$" => %{},
                "_" => %{"title" => %{"$" => %{}, "_" => "Hello Elixir!"}}
              },
              %{
                "$" => %{},
                "_" => %{"title" => %{"$" => %{}, "_" => "Hello World!"}}
              }
            ]
          }
        }
      }

Installation

Add XMap to your project's dependencies in mix.exs:

def deps do
  [{:xmax, "~> 1.0"}]
end

And fetch your project's dependencies:

$ mix deps.get

Documentation

Documentation is available at https://hexdocs.pm/xmax

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/Attila/xmax. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

Running tests

Clone the repo and fetch its dependencies:

$ git clone git@github.com:attilagal/xmax.git
$ cd xmax
$ mix deps.get
$ mix test

Building docs

$ mix docs

Copyright and License

Copyright 2018 Attila Gal

XMax source code is licensed under the MIT License.