Elm:
עבודה עם XML

איך לעשות:

ב-Elm, אתה עוסק ב-XML באמצעות חבילת elm/xml. הנה מבט מהיר על פירוס קטע XML:

import Xml.Decode exposing (..)
import Xml.Decode.Pipeline exposing (..)

xmlString = """
<book id="123">
    <title>Elm in Action</title>
    <author>Robin Heggelund Hansen</author>
</book>
"""

type alias Book =
    { id : String
    , title : String
    , author : String
    }

bookDecoder : Decoder Book
bookDecoder =
    decode Book
        |> required "id" (attribute "id")
        |> required "title" (child "title" (content text))
        |> required "author" (child "author" (content text))

case Xml.Decode.fromString bookDecoder xmlString of
    Ok book ->
        -- עשה משהו עם הספר שהתפרס כאן
        Debug.toString book

    Err error ->
        -- טפל בשגיאות
        Debug.toString error

פלט לדוגמה, בהנחה שאין שגיאות:

"{ id = \"123\", title = \"Elm in Action\", author = \"Robin Heggelund Hansen\" }"

צלילה עמוקה

XML (שפת הסימון המורחבת) קיימת מהשנות ה-90 המאוחרות, תקופה בה האינטרנט היה כבד על טקסטים והצורך בדרך מובנית וגמישה להעברת נתונים היה קריטי. בעקבות המסורבלות והמורכבות שלה, XML איבדה קצת מעמדתה לטובת JSON. עם זאת, XML עדיין שכיחה, במיוחד בסביבות ארגוניות או בפרוטוקולים כמו SOAP.

הגישה של Elm ל-XML היא פונקציונלית ובטוחה מבחינת טיפוסים. שימוש בחבילת elm/xml מתבסס על פילוסופיה של Elm של מפורשות ואמינות. כאשר מדובר בפירוס, החבילה מספקת מבחר של מפענחים שאתה מרכיב יחד כדי לטפל במבנה ה-XML.

בהשוואה לאלטרנטיבות כמו DOMParser של JavaScript או ElementTree של Python, שיטת Elm יכולה להיראות יותר מסורבלת אך היא מבטיחה בטיחות. אין חריגות בזמן ריצה עבור שדות חסרים או אי התאמות טיפוס; אם משהו לא בסדר, אתה מקבל שגיאה בזמן קומפילציה.

פונקציות הפירוס של elm/xml מתמקדות במיפוי צמתי XML לטיפוסים של Elm. אתה בונה מפענחים שמשקפים את צורת הנתונים שלך, ומבטיח שהאפליקציה שלך מטפלת ב-XML בחומרה בדיוק כמו שהיא מטפלת במבני נתונים פנימיים.

יצירת XML היא פחות נפוצה ב-Elm אך ניתן להשיגה באמצעות חבילת התאימות Xml.Encode.

ראה גם