This is an alternative site for discovering Elm packages. You may be looking for the official Elm package site instead.
We were not able to find the expected elm-package.json file at this tag.
Tag 3.0.0
Committed At 2018-11-03 20:43:41 UTC

Modules

    README

    elm-xml-decode

    CircleCI

    XML decoder, sharing the spirit of Json.Decode.

    Using jinjor/elm-xml-parser as its parser component.

    Related Works

    eeue56/elm-xml is an existing full-package XML parser/decoder for Elm, though I intend to provide an alternative XML decoder which exhibits following properties:

    • Provides Decoder-based APIs, sharing the spirit of Json.Decode
    • Also provides DSL-styled decoder compositions, sharing the sprits of Json.Decode.Pipeline
    • Handles list of XML node with identical tags, using ListDecoder type
    • Locates targeting XML nodes using "path" of tags, partially mimicking XPath

    Examples

    Basics:

    import Xml.Decode exposing (..)
    
    type alias Data =
        { string : String
        , integers : List Int
        }
    
    dataDecoder : Decoder Data
    dataDecoder =
        map2 Data
            (path [ "path", "to", "string", "value" ] (single string))
            (path [ "path", "to", "int", "values" ] (list int))
    
    run dataDecoder
        """
        <root>
            <path>
                <to>
                    <string>
                        <value>SomeString</value>
                    </string>
                    <int>
                        <values>1</values>
                        <values>2</values>
                    </int>
                </to>
            </path>
        </root>
        """
    --> Ok { string = "SomeString", integers = [ 1, 2 ] }
    

    Pipeline Decoder compositions

    We have map, map2 and variants, though the Pipeline style is also possible:

    pipelineDecoder : Decoder Data
    pipelineDecoder =
        succeed Data
            |> requiredPath [ "path", "to", "string", "value" ] (single string)
            |> requiredPath [ "path", "to", "int", "values" ] (list int)
    

    Development

    Globally install Elm Platform, elm-test, and elm-verify-examples

    $ elm-test
    $ elm-verify-examples
    $ elm-verify-examples --elm-test=elm-test # Explicitly set elm-test to use, if particular elm-test version has some issues
    

    Benchmark: Are they efficient? Are they fast?

    (Not yet updated for Elm 0.19)

    Benchmark codes can be found in benchmarks/ directory.

    In Elm 0.18 (elm-xml-decode 1.x)

    Using BrianHicks/elm-benchmark and examples in W3School. Available here as a static web page.

    Sample result (on my MacBookPro early 2015):

    • CPU: Core i5 2.7GHz
    • Mem: DDR3 8GB 1867MHz
    • Google Chrome 63.0.3239.84 64bit

    bench

    jinjor/elm-xml-parser was using elm-tools/parser, which suffered from some performance issues at that time (possibly related to this comment?).

    Although decoding part should practically be fast enough (see decode result of note.xml and cd_catalog.xml).

    Looking forward to see similar benchmarks from other related works!!

    License

    BSD-3-Clause