Clojure:
การทำงานกับ XML

วิธีการ:

Clojure มีไลบรารี clojure.data.xml สำหรับการแยกวิเคราะห์และการส่งออก XML เรามาแยกวิเคราะห์ XML กันบ้าง:

(require '[clojure.data.xml :as xml])

(let [content "<root><foo>bar</foo><foo>baz</foo></root>"
      parsed (xml/parse-str content)] ; แยกวิเคราะห์สตริง XML
  (println parsed))

ผลลัพธ์:

Element{:tag :root, :attrs {}, :content (Element{:tag :foo, :attrs {}, :content ("bar")} Element{:tag :foo, :attrs {}, :content ("baz")})}

ในการส่งออก XML จากโครงสร้าง Clojure:

(def my-xml (xml/element :root {}
                          (xml/element :foo {} "bar")
                          (xml/element :foo {} "baz")))

(println (xml/emit-str my-xml))

ผลลัพธ์:

<root><foo>bar</foo><foo>baz</foo></root>

ลงลึก

XML เริ่มต้นในช่วงปลายทศวรรษ 90 ในฐานะกลุ่มย่อยที่ง่ายกว่าของ SGML ที่มีจุดประสงค์สำหรับข้อมูลเว็บ มันเพิ่มขึ้นในการใช้งานอย่างมากด้วยเทคโนโลยีเช่น SOAP และ XHTML แต่ก็ได้รับการแข่งขันจาก JSON ซึ่งเป็นที่นิยมเนื่องจากความเรียบง่ายและเบาบาง

วิธีการของ Clojure ต่อ XML ที่คงความเป็นฟังก์ชันและอิงข้อมูล ยังคงภักดีต่อจรรยาบรรณของภาษา clojure.data.xml เป็นเพียงหนึ่งตัวเลือก; คุณมี clojure.xml สำหรับความต้องการพื้นฐาน และสำหรับการทำงานร่วมกับ Java คุณสามารถใช้งานกับตัวที่มีศักยภาพมากอย่าง JAXB หรือ DOM4J

โปรดทราบว่าประสิทธิภาพและการใช้หน่วยความจำในการจัดการกับเอกสาร XML ขนาดใหญ่มากอาจเป็นข้อจำกัดได้ ผู้แยกวิเคราะห์แบบสตรีมเมอร์เช่น StAX สามารถช่วยได้ แต่คุณจะต้องเข้าสู่โลกของ Java สำหรับพวกเขา

ดูเพิ่มเติม