StAX
واجهة برمجة تطبيقات البث لـ XML ( StAX ) هي واجهة برمجة تطبيقات ( API ) لقراءة وكتابة مستندات XML ، نشأت من مجتمع لغة برمجة Java .
تقليديًا، تكون واجهات برمجة تطبيقات XML إما:
- يعتمد على DOM - تتم قراءة المستند بأكمله في الذاكرة كهيكل شجري للوصول العشوائي بواسطة التطبيق المُستدعي
- يعتمد على الأحداث - يسجل التطبيق لتلقي الأحداث عند مواجهة الكيانات داخل المستند المصدر.
لكل منهما مزايا: على سبيل المثال، يسمح DOM بالوصول العشوائي إلى المستند، كما أن الخوارزمية التي تعتمد على الأحداث مثل SAX لها بصمة ذاكرة صغيرة وعادة ما تكون أسرع بكثير.
يمكن اعتبار هذين النموذجين للوصول متناقضين تمامًا. فواجهة برمجة التطبيقات القائمة على الشجرة تسمح بالوصول والتعديل العشوائي غير المحدود، بينما واجهة برمجة التطبيقات القائمة على الأحداث هي عبارة عن تمريرة واحدة عبر المستند المصدر.
صُممت StAX لتكون حلاً وسطاً بين هذين النقيضين. في مفهوم StAX، تُمثل نقطة الدخول البرمجية مؤشراً يُشير إلى موقع داخل المستند. يُحرك التطبيق المؤشر للأمام، "يسحب" المعلومات من المُحلل حسب الحاجة. يختلف هذا عن واجهة برمجة التطبيقات القائمة على الأحداث، مثل SAX، التي "تدفع" البيانات إلى التطبيق، مما يتطلب من التطبيق الاحتفاظ بحالة بين الأحداث لتتبع الموقع داخل المستند.
الأصول
تستند StAX إلى عدد من واجهات برمجة التطبيقات غير المتوافقة لسحب XML، وأبرزها XMLPULL ، والتي تعاون مؤلفوها (ستيفان هاوستين وألكسندر سلومينسكي) مع جهات أخرى، من بينها BEA Systems و Oracle و Sun و James Clark .
أمثلة
من مواصفات JSR-173 • الإصدار النهائي، الإصدار 1.0 (مستخدمة بموجب الاستخدام العادل).
يقتبس:
- توضح واجهة برمجة تطبيقات Java التالية الطرق الرئيسية لقراءة XML باستخدام أسلوب المؤشر.
public interface XMLStreamReader { public int next () throws XMLStreamException ; public boolean hasNext () throws XMLStreamException ; public String getText (); public String getLocalName (); public String getNamespaceURI (); // ...طرق أخرى غير معروضة }- يحتوي جانب الكتابة في واجهة برمجة التطبيقات على طرق تتوافق مع جانب القراءة لأنواع أحداث "StartElement" و "EndElement".
public interface XMLStreamWriter { public void writeStartElement ( String localName ) throws XMLStreamException ; public void writeEndElement () throws XMLStreamException ; public void writeCharacters ( String text ) throws XMLStreamException ; // ...طرق أخرى غير معروضة }- 5.3.1 قارئ XMLStream
- يوضح هذا المثال كيفية إنشاء مصنع إدخال، وإنشاء قارئ، والتكرار على عناصر مستند XML.
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance ( ); XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader ( ... ) ; while ( xmlStreamReader.hasNext ( ) ) { xmlStreamReader.next ( ) ; }انظر أيضاً
طرق متنافسة ومتكاملة لمعالجة XML في جافا (الترتيب يعتمد بشكل عام على تاريخ التقديم الأولي):
- نموذج كائن المستند (DOM) ، وهو أول نموذج قياسي لمعالجة XML قائم على الشجرة ومستقل عن اللغة/المنصة؛ وتشمل نماذج Java الشجرية البديلة JDOM و Dom4j و XOM
- واجهة برمجة التطبيقات البسيطة لـ XML (SAX) ، وهي واجهة برمجة تطبيقات دفع XML القياسية
- تعمل واجهة برمجة تطبيقات ربط XML في Java (JAXB) على أساس محلل آخر (عادة محلل تدفق البيانات)، وتقوم بربط البيانات الموجودة من وإلى كائنات Java.
- XML المتدفق
- واجهة برمجة تطبيقات XQuery للغة Java
روابط خارجية
- مقدمة إلى StAX XML.com، هارولد، إليوت راستي
- واجهة برمجة تطبيقات جافا للبث المباشر لملفات XML (Stax) - برنامج تعليمي
- أنماط XMLPull مقال حول أنماط تصميم XML Pull (وStAX) بقلم ألكسندر سلومينسكي.
- محلل StAX - واجهات برمجة تطبيقات المؤشر والمكرر: مقال حول واجهات برمجة تطبيقات المؤشر والمكرر من HowToDoInJava.
- جافا (منصة برمجية)
- واجهات برمجة التطبيقات
- محللات XML
