Jaxb إلحاق بتصريحات مساحة الاسم غير المستدامة إلى العلامات

StackOverflow https://stackoverflow.com/questions/1673626

سؤال

أقوم بتنفيذ برنامج فرعي مقلدي جديد ل XMPP، وأنا أستخدم مزيج من STAX و JAXB لتحليل / استشعار المراجع. وعندما مارشال رسالة، انتهى بي الأمر إلى الكثير من تصريحات مساحة الاسم غير المستدامة:

   <ns2:auth xmlns:ns2="urn:ietf:params:xml:ns:ilf-auth" 
   xmlns:ns4="ilf:iq:experiment:power" xmlns:ns3="ilf:iq:experiment:init" 
   xmlns:ns5="ilf:iq:experiment:values" xmlns:ns6="ilf:iq:experiment:result" 
   xmlns:ns7="ilf:iq:experiment:stop" xmlns:ns8="ilf:iq:experiment:end">
   compton@ilf</ns2:auth>

بدلاً من:

   <ns:auth xmlns:ns="urn:ietf:params:xml:ns:ilf-auth>compton@ilf</ns:auth>

هل هناك أي طريقة لتحويل ذلك؟

تستخدم جميع مساحات الأسماء هذه في رسائل مختلفة تمشوها / غير مرغوب عن طريق Jaxb، ولكن كل رسالة تستخدم مساحة اسم واحدة.

ملاحظة. أنا لست خبير XML من فضلك لا تضربني إذا فعلت بعض الخطأ الغبي؛)

هل كانت مفيدة؟

المحلول

تم طلب الوظيفة التي تبحث عنها كتعزيز على تعقب المشكلات Jaxb في العدد 103.. وبعد تم رفض التحسين، نظرا لأن مؤلفي Jaxb يجدونها مكلفة للغاية في اجتياز شجرة الكائن مرة أخرى قبل أن يبدأ التسلسل الفعلي في تحديد المسامحات السطقية المطلوبة بالفعل.

على الرغم من أن الأسماء غير الضرورية غير متضخمة غير ضرورية غير ضرورية لإبطال مستند XML. إذا كان لديك حقا لحفظ البايتات القليلة وتكلفة الحساب الإضافية بأسعار معقولة، فيجب أن تكون من السهل جدا كتابة معالج XML الخاص بك الخاص بك، والذي يأخذ إخراج Jaxb، ويوزع المستند ويكتب مستند جديد دون تعريفات مساحة الاسم غير المستخدمة وبعد

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top