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 สำหรับพวกเขา