العمل مع XML في Kotlin: المكتبات والأدوات للتحليل والإنشاء

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع XML في Kotlin: نظرة عامة على المكتبات وأمثلة عملية



على الرغم من الاستخدام الواسع لـ JSON وYAML، لا يزال XML تنسيقًا مطلوبًا في الأنظمة المؤسسية وملفات التكوين وبروتوكولات SOAP وتطوير Android. Kotlin، بفضل توافقه مع Java، يوفر الوصول إلى جميع مكتبات Java الناضجة للعمل مع XML، بالإضافة إلى حلوله الأصلية الخاصة. في هذه المقالة، سنستعرض خمسة أساليب رئيسية لمعالجة XML في Kotlin، بما في ذلك التحليل والإنشاء والتحقق من صحة المستندات.



1. الأدوات المضمنة: DOM, SAX, StAX

يستخدم Kotlin مباشرة واجهة Java القياسية لـ XML. هذه هي أبسط طريقة للمهام السريعة، ولكنها تتطلب الكثير من الكود النمطي.



DOM (نموذج كائن المستند)

يقوم بتحميل XML بالكامل في الذاكرة ويسمح بالوصول العشوائي إلى العقد. مناسب للمستندات الصغيرة.

import javax.xml.parsers.DocumentBuilderFactoryimport org.w3c.dom.Element

fun parseWithDOM(xml: String) { val factory = DocumentBuilderFactory.newInstance() val builder = factory.newDocumentBuilder() val doc = builder.parse(xml.byteInputStream()) val books = doc.getElementsByTagName("book") for (i in 0 until books.length) { val book = books.item(i) as Element val title = book.getElementsByTagName("title").item(0).textContent println("كتاب: $title") }}


SAX (واجهة بسيطة لـ XML)

محلل تدفقي، لا يقوم بتحميل المستند بالكامل في الذاكرة. فعال للملفات الكبيرة، ولكنه معقد في التنفيذ.

import org.xml.sax.helpers.DefaultHandlerimport org.xml.sax.Attributesimport javax.xml.parsers.SAXParserFactory

class BookHandler : DefaultHandler() { override fun startElement(uri: String, localName: String, qName: String, attributes: Attributes) { if (qName == "book") { println("تم العثور على كتاب بالمعرّف: ${attributes.getValue("id")}") } }}

fun parseWithSAX(xml: String) { val factory = SAXParserFactory.newInstance() val parser = factory.newSAXParser() parser.parse(xml.byteInputStream(), BookHandler())}


2. JDOM — واجهة برمجة تطبيقات ملائمة لـ Kotlin

JDOM هي مكتبة Java شائعة تتكامل بشكل ممتاز مع Kotlin بفضل دعم المجموعات ووظائف الامتداد. تتيح قراءة وتعديل وإنشاء XML بدون استخدام المصانع المعقدة.



التحليل والتنقل

import org.jdom2.input.SAXBuilderimport org.jdom2.Element

fun parseWithJDOM(xml: String) { val builder = SAXBuilder() val doc = builder.build(xml.byteInputStream()) val root = doc.rootElement root.getChildren("book").forEach { book -> val title = book.getChildText("title") val author = book.getChildText("author") println("$title — $author") }}


إنشاء XML من الصفر

import org.jdom2.Documentimport org.jdom2.Elementimport org.jdom2.output.XMLOutputter

fun createXML(): String { val root = Element("library") val book = Element("book").apply { setAttribute("id", "1") addContent(Element("title").setText("Kotlin in Action")) addContent(Element("author").setText("Dmitry Jemerov")) } root.addContent(book) val doc = Document(root) val outputter = XMLOutputter().apply { format = org.jdom2.output.Format.getPrettyFormat() } return outputter.outputString(doc)}


3. XOM — البساطة والصرامة

يتبع XOM مبدأ "غير قابل للتغيير افتراضيًا" — لا يمكن تعديل أي عقدة بعد إنشائها، فقط استبدالها. وهذا يجعل الكود قابلًا للتنبؤ وآمنًا. تقوم المكتبة تلقائيًا بالتحقق من صحة البنية.



import nu.xom.Builderimport nu.xom.Serializer

fun parseWithXOM(xml: String) { val builder = Builder() val doc = builder.build(xml, null) val root = doc.rootElement

توصيات