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 في جافا (الترتيب يعتمد بشكل عام على تاريخ التقديم الأولي):