Arduino:
การทำงานกับ XML
วิธีการ:
เราจะใช้ไลบรารี XMLWriter
เพื่อสร้าง XML และไลบรารี tinyxml2
เพื่อแยกส่วนมัน ติดตั้งไลบรารีเหล่านี้ผ่าน Library Manager ใน Arduino IDE ของคุณ
การสร้างเอกสาร XML:
#include <XMLWriter.h>
void setup() {
Serial.begin(9600);
XMLWriter xml(&Serial); // ใช้ Serial เพื่อแสดงผล
xml.header();
xml.tag("greeting").tag("text").text("Hello, world!").close().close();
xml.flush();
}
void loop() {
}
การถอดรหัสสตริง XML:
#include <tinyxml2.h>
tinyxml2::XMLDocument doc;
doc.Parse("<greeting><text>Hello, world!</text></greeting>");
tinyxml2::XMLElement* text = doc.FirstChildElement("greeting")->FirstChildElement("text");
if (text != nullptr) {
Serial.println(text->GetText());
}
ตัวอย่างผลลัพธ์:
<greeting>
<text>Hello, world!</text>
</greeting>
ลึกลงไป
XML หรือ Extensible Markup Language เป็นภาษามาร์กอัพที่กำหนดชุดของกฎสำหรับการเข้ารหัสเอกสารในรูปแบบที่สามารถอ่านได้โดยทั้งมนุษย์และเครื่องจักร มันมีมาตั้งแต่ปลายยุค 90 และถูกใช้งานอย่างกว้างขวางในหลายสาขา โดยเฉพาะที่ต้องการการแลกเปลี่ยนข้อมูลที่ไม่ขึ้นกับแพลตฟอร์ม Arduino ที่มีทรัพยากรหน่วยความจำจำกัดทำให้การทำงานกับ XML ยากกว่าบนพีซี ดังนั้น ไลบรารีที่มีน้ำหนักเบาจึงมีความสำคัญ แม้ว่า JSON จะได้รับความนิยมสำหรับการแลกเปลี่ยนข้อมูลเนื่องจากโครงสร้างที่ง่ายกว่าและมีขนาดเล็ก แต่ XML ยังคงถูกใช้งานอย่างแพร่หลาย เฉพาะเมื่อต้องจัดการกับระบบเก่าหรือแอปพลิเคชันที่ต้องการการตรวจสอบเอกสารผ่านสคีมา กุญแจสำคัญในการดำเนินการ XML ของ Arduino คือการแยกส่วน Stream ซึ่งอ่านเอกสารแบบแบ่งส่วนเพื่อรักษาการใช้หน่วยความจำให้ต่ำ
ดูเพิ่มเติม
- เอกสารข้อมูลไลบรารี TinyXML-2
- ไลบรารี Arduino JSON สำหรับทางเลือกเมื่อทำงานกับข้อมูล JSON
- W3Schools บทเรียน XML สำหรับการเรียนรู้ XML ทั่วไป
- W3C ข้อกำหนด XML สำหรับมาตรฐานและคำแนะนำ XML อย่างเป็นทางการ