XML ↔ JSON conversion คืออะไร?
XML (Extensible Markup Language) คือรูปแบบข้อความแบบ tag-based สำหรับข้อมูลแบบ hierarchical คุณจะเห็นใน SOAP web service, RSS และ Atom feed, HL7 FHIR health record, ไฟล์ sitemap.xml และไฟล์ config ที่มาพร้อมกับ Maven, Spring และ Android Gradle JSON (JavaScript Object Notation ที่กำหนดโดย RFC 8259) อธิบายข้อมูล nested ประเภทเดียวกัน แต่ใช้ brace และ array แทนแท็กเปิดและปิด JSON คือสิ่งที่ REST API เกือบทุกตัวใช้ในปัจจุบัน และเป็นรูปร่างค่า native ของทุก browser runtime การแปลงระหว่างสองรูปแบบเป็นงานที่ดูง่ายจนกว่าจะเจอ attribute, mixed content, repeated children และ CDATA regex แบบ custom คือคำตอบที่ผิด parser จริงคือคำตอบที่ถูก เครื่องมือนี้บรรจุ parser จริง (fast-xml-parser) และรันในเบราว์เซอร์ ดังนั้นคุณสามารถวาง XML envelope จาก legacy SOAP service และดูมันกลายเป็น JSON object ที่ drop ลงใน Redux store ได้เลย หรือนำ JSON payload ที่รวบรวมใน REST client แล้วแปลงกลับเป็นรูปร่าง XML ที่ enterprise endpoint ยังคงคาดหวัง
XML ↔ JSON mapping ทำงานอย่างไร?
ทุกการแปลงรัน local ในเบราว์เซอร์โดยใช้ไลบรารี fast-xml-parser ที่มาพร้อม (MIT, version 4.x) กฎการ mapping ระดับสูง:
- Element เป็น key: แต่ละชื่อ XML element กลายเป็น JSON object key
<user><name>Alice</name></user>map เป็น{"user":{"name":"Alice"}} - Attribute เป็น prefixed key: attribute ถูกเก็บภายใต้ key ที่เกิดจากการเติม prefix ที่เลือก ด้วย prefix
@,<user id="1">สร้าง{"user":{"@id":"1"}} - Text content เป็น text-node key: เมื่อ element มีทั้ง attribute และ text ข้อความจะไปอยู่ภายใต้ text-node key ที่เลือก
<price currency="USD">9.99</price>ที่มี key#textสร้าง{"price":{"@currency":"USD","#text":"9.99"}} - Repeated children เป็น array: เมื่อ บังคับ array สำหรับ child tag ที่ซ้ำกัน เปิด sibling element หลายรายการที่มีชื่อเดียวกันจะยุบลงใน JSON array
<items><item>A</item><item>B</item></items>กลายเป็น{"items":{"item":["A","B"]}} - CDATA section: ข้อความ raw ภายใน
<![CDATA[…]]>ถูกเก็บภายใต้ key#cdataเพื่อไม่ให้ angle bracket และ ampersand ถูก escape ใหม่ระหว่าง round-trip - JSON เป็น XML ย้อนกลับ mapping: object key กลายเป็น element, prefixed key กลายเป็น attribute และ array ขยายเป็น sibling element ที่ซ้ำกัน
ทำไมต้องแปลง XML และ JSON ด้วยเครื่องมือนี้?
- ข้อมูลของคุณอยู่บนเครื่องของคุณ ทุกการ parse และทุกการสร้างรันใน JavaScript context ของหน้านี้ FHIR patient bundle, SOAP authentication envelope, ไฟล์ config ที่เป็นความลับ, billing export — ไม่มีสิ่งใดแตะ server ของเราเพราะไม่มีขั้นตอน upload ในเส้นทางโค้ด เปิด network panel และดู
- Legacy SOAP เข้าสู่ REST-first front end คือสิ่งที่พบบ่อยที่สุด ธนาคารหรือบริษัทประกัน expose SOAP endpoint ที่จะไม่ถูกยกเลิกอีกหลายปี แอป React หรือ Vue ที่เรียกมันไม่ต้องการเรียนรู้ XML วาง envelope รับ JSON กลับมาพร้อม attribute ที่มี prefix และ namespace ที่เก็บไว้ drop เนื้อหา
Bodyลงใน state store - RSS, Atom และ sitemap consumer ก็ได้ประโยชน์เช่นกัน podcast directory, news aggregator หรือ dashboard ภายในที่รับ
sitemap.xmlสามารถข้ามการเขียน XML parser ทั้งหมด แปลง feed ครั้งเดียว ทำงานกับ JSON array และ client code ของคุณยังคงใช้ภาษาที่พูดอยู่แล้ว - การ export config เป็นอีกกรณีใช้งาน Maven, Spring, Android Gradle และ Ant เก่า ๆ ต่าง emit XML; cloud-native tooling ด้านอีกฝั่ง (Terraform, Ansible, GitHub Actions, cloud-init) อ่าน JSON หรือ YAML แปลงในเบราว์เซอร์แทนการรัน Python script ที่มี third-party dependency
การใช้งาน XML ↔ JSON conversion ทั่วไปมีอะไรบ้าง?
การเชื่อม XML และ JSON เกิดขึ้นใน integration engineering, API tooling และ data engineering pattern บางอย่างโดดเด่น:
- SOAP to REST bridging: ดึง payload
Bodyจาก SOAP envelope ที่ legacy banking หรือ insurance API คืนมาและแปลงเป็น JSON เพื่อให้ React หรือ Vue front-end บริโภคได้โดยไม่ต้องมี server-side proxy layer - FHIR health record: แปลง HL7 FHIR XML bundle เป็น JSON สำหรับโหลดลงใน MongoDB Atlas collection หรือ PostgreSQL JSONB column ที่ analyst สามารถ query ได้
- Sitemap และ feed processing: เปลี่ยน
sitemap.xmlหรือ RSS/Atom feed เป็น JSON array เพื่อให้ custom indexer, Slack bot หรือ dashboard widget วน iterate entry โดยไม่ต้องดึง XML parser มาเป็น dependency
XML ↔ JSON round-trip มีลักษณะอย่างไร?
ลองตัวอย่างเล็ก ๆ วาง <user id="1"><name>Alice</name></user> ลงใน input ตั้ง attribute prefix เป็น @ เปิดโหมด XML to JSON แล้วกด Convert ผลลัพธ์คือ {"user":{"@id":"1","name":"Alice"}} สลับโหมดเป็น JSON to XML วาง JSON นั้นกลับ ตั้ง indent เป็น 2 ช่องว่าง แล้วกด Convert อีกครั้ง คุณจะได้ <user id="1">\n <name>Alice</name>\n</user> ที่มีโครงสร้างเหมือนกับต้นฉบับ สิ่งเดียวที่ไม่รับประกันใน round-trip คือลำดับ attribute เพราะ JSON object key ไม่มีลำดับตาม spec
XML ↔ JSON converter นี้บรรจุ fast-xml-parser@4 ที่ origin เดียวกัน รองรับ attribute, CDATA, repeated child tag และ namespace prefix และทำงาน offline เมื่อหน้าโหลดแล้ว ไม่มีขั้นตอน upload ไม่มี CDN proxy ไม่มี analytics beacon ไม่มี telemetry ใด ๆ ทุกไบต์ของ input และ output อยู่ในเบราว์เซอร์ของคุณ