التحقق من الصحة باستخدام JaxB و Stax إلى مستند Marshal XML

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

  •  20-09-2019
  •  | 
  •  

سؤال

لقد أنشأت مخطط XML (foo.xsd) واستخدمت xjc لإنشاء فصول الربط الخاصة بي لـ JAXB. لنفترض أن عنصر الجذر collection وأنا أكتب ن document الكائنات ، والتي هي أنواع معقدة.

لأنني أخطط لكتابة ملفات XML كبيرة ، أستخدم Stax لكتابة collection عنصر الجذر ، و jaxb إلى المارشال وثيقة فرعية باستخدام Marshaller.marshal(JAXBElement, XMLEventWriter). هذا هو النهج الموصى به من قبل دليل مستخدم Jaxb غير الرسمي.

سؤالي هو ، كيف يمكنني التحقق من صحة XML أثناء تناقضه؟ إذا قمت بربط مخطط لـ Jaxb Marshaller (باستخدام Marshaller.setSchema()) ، أحصل على أخطاء التحقق من صحة لأنني فقط أقوم بتشويه الشجرة الفرعية (إنه يشكو من أنه لا يرى collection عنصر الجذر "). أفترض أن ما أريد فعله حقًا هو ربط مخطط إلى Stax XMLEventWriter أو شيء من هذا القبيل.

أي تعليقات على هذا النهج العام ستكون مفيدة. في الأساس أريد أن أكون قادرًا على الاستخدام JAXB إلى مستندات XML الكبيرة المارشال و Unmarshal دون نفاد الذاكرة ، لذلك إذا كانت هناك طريقة أفضل للقيام بذلك ، فأخبرني بذلك.

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

المحلول

يبدو أن بعض تطبيقات Stax قادرة على التحقق من صحة الإخراج. انظر الإجابة التالية على سؤال مماثل:

باستخدام Stax2 مع Woodstox

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