العمل مع XML في Java: المكتبات والأدوات للتحليل

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

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

ابدأ الدورة

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

XML (eXtensible Markup Language) لا يزال أحد التنسيقات الرئيسية لتخزين ونقل البيانات المنظمة في التطبيقات المؤسسية وخدمات الويب وملفات التكوين. توفر Java مجموعة غنية من المكتبات المدمجة والجهات الخارجية للعمل مع XML. في هذه المقالة، سنشرح بالتفصيل الأدوات الرئيسية وخصائصها وأمثلة على استخدامها.



واجهات برمجة التطبيقات المدمجة للعمل مع XML

تحتوي مكتبة Java القياسية (Java SE) على ثلاث واجهات برمجة تطبيقات رئيسية لتحليل ومعالجة XML:



1. DOM (Document Object Model)

DOM هي واجهة برمجة تطبيقات تقوم بتحميل مستند XML بأكمله في الذاكرة على شكل هيكل شجري. هذا مناسب للوصول العشوائي إلى العناصر، ولكنه يتطلب موارد كبيرة عند العمل مع الملفات الكبيرة.

متى تستخدم: عندما تحتاج إلى تعديل المستند بشكل متكرر أو تنفيذ استعلامات معقدة على هيكله.



import javax.xml.parsers.*;import org.w3c.dom.*;

public class DomExample { public static void main(String[] args) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse("data.xml");

NodeList books = doc.getElementsByTagName("book"); for (int i = 0; i < books.getLength(); i++) { Element book = (Element) books.item(i); String title = book.getElementsByTagName("title").item(0).getTextContent(); System.out.println("كتاب: " + title); } }}


2. SAX (Simple API for XML)

SAX هو محلل يعتمد على الأحداث. يقرأ المستند بشكل تسلسلي ويستدعي طرق المعالجة عند مواجهة العلامات أو السمات أو النص. لا ينشئ شجرة في الذاكرة، لذلك فهو مثالي للملفات الكبيرة.

متى تستخدم: للمعالجة التدفقية لملفات XML الضخمة (مثل السجلات أو بيانات التصدير).



import org.xml.sax.*;import org.xml.sax.helpers.*;import javax.xml.parsers.*;

public class SaxExample extends DefaultHandler { public void startElement(String uri, String localName, String qName, Attributes attrs) { if ("book".equals(qName)) { System.out.println("تم العثور على كتاب بالمعرف: " + attrs.getValue("id")); } }

public static void main(String[] args) throws Exception { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); parser.parse("data.xml", new SaxExample()); }}


3. StAX (Streaming API for XML)

StAX هو محلل تدفقي بنموذج السحب (pull). على عكس SAX حيث يتم "دفع" الأحداث إلى المعالج، يسمح StAX للبرنامج بطلب العنصر التالي (نموذج السحب). هذا يعطي تحكمًا أكبر في عملية التحليل.

متى تستخدم: عندما تحتاج إلى مرونة SAX ولكن مع إمكانية إيقاف القراءة واستئنافها.



import javax.xml.stream.*;

public class StaxExample { public static void main(String[] args) throws Exception { XMLInputFactory factory = XMLInputFactory.newInstance(); XMLStreamReader reader = factory.createXMLStreamReader( new java.io.FileInputStream("data.xml"));

while (reader.hasNext()) { int event = reader.next(); if (event == XMLStreamConstants.START_ELEMENT && "title".equals(reader.getLocalName())) { System.out.println("العنوان: " + reader.getElementText()); } } reader.close(); }}


ربط XML بكائنات Java: JAXB

JAXB (Java Architecture for XML Binding) هي واجهة برمجة تطبيقات قياسية لتحويل XML إلى كائنات Java والعكس (التسلسل/إلغاء التسلسل). بو

توصيات