التحقق من الصحة باستخدام JaxB و Stax إلى مستند Marshal XML
سؤال
لقد أنشأت مخطط 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 قادرة على التحقق من صحة الإخراج. انظر الإجابة التالية على سؤال مماثل: