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 (eXtensible Markup Language) มีอยู่มาตั้งแต่ปลายทศวรรษ 90, เมื่อเว็บมีข้อความมากและความต้องการวิธีการที่มีโครงสร้างแต่ยืดหยุ่นในการถ่ายทอดข้อมูลก็เป็นสิ่งสำคัญ. เนื่องจากความยืดยาวและความซับซ้อน, XML ได้สูญเสียพื้นที่บางส่วนให้กับ JSON. อย่างไรก็ตาม, XML ยังคงมีอยู่ในหลายสถานที่, โดยเฉพาะอย่างยิ่งในสภาพแวดล้อมขององค์กรหรือโปรโตคอลเช่น SOAP.

การเข้าใกล้ XML ของ Elm นั้นเป็นแบบฟังก์ชันและปลอดภัยตามประเภทข้อมูล. การใช้แพ็คเกจ elm/xml หมายถึงการยอมรับปรัชญาของ Elm ซึ่งเน้นความชัดเจนและความเชื่อถือได้. เมื่อพูดถึงการแยกวิเคราะห์, แพ็คเกจนี้มีตัวถอดรหัส (decoders) หลากหลายที่คุณประกอบกันเพื่อจัดการกับโครงสร้าง XML.

เมื่อเปรียบเทียบกับทางเลือกอื่นๆ เช่น DOMParser ของ JavaScript หรือ ElementTree ของ Python, วิธีของ Elm อาจดูมีคำกล่าวมากขึ้นแต่รับประกันความปลอดภัย. ไม่มีข้อยกเว้นระหว่างการรันโปรแกรมสำหรับฟิลด์ที่หายไปหรือไม่ตรงประเภทข้อมูล; หากมีอะไรผิดพลาด, คุณจะได้รับข้อผิดพลาดในเวลาคอมไพล์.

ฟังก์ชัน decode ใน elm/xml อิงหลักการทำงานด้วยการแมปโหนด XML เข้ากับประเภทข้อมูลใน Elm. คุณสร้างตัวถอดรหัสที่สะท้อนรูปแบบข้อมูลของคุณ, รับประกันว่าแอปพลิเคชัน Elm ของคุณจัดการกับ XML ได้อย่างเข้มงวดเช่นเดียวกับโครงสร้างข้อมูลภายในของตัวมันเอง.

การสร้าง XML ใน Elm นั้นน้อยกว่า แต่สามารถทำได้ด้วยตัวเข้าคู่ของ elm/xml คือ Xml.Encode.

ดูเพิ่มเติม

  • คู่มือ Elm เกี่ยวกับ JSON ซึ่งยังใช้ได้กับความคิดเกี่ยวกับ XML: https://guide.elm-lang.org/interop/json.html
  • มาตรฐาน XML โดย W3C เพื่อการเข้าใจ XML ลึกซึ้งยิ่งขึ้น: https://www.w3.org/XML/