سؤال

أنا أحاول العثور على طريقة التحقق من صحة XML كبيرة ضد XSD.رأيت السؤال ...أفضل طريقة للتحقق من صحة XML... ولكن الإجابات على جميع وأشار إلى استخدام Xerces مكتبة التحقق من الصحة.المشكلة الوحيدة هي عندما استخدم هذه المكتبة للتحقق من 180 MB الملف ثم أحصل على OutOfMemoryException.

هل هناك أي أدوات أخرى ، المكتبات ، استراتيجيات صحة أكبر من المعتاد XML الملف ؟

تحرير:ساكس الحل عملت على التحقق من صحة جافا, لكن اثنين آخرين اقتراحات libxml الأداة مفيدة جدا فضلا عن التحقق من صحة خارج جاوة.

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

المحلول

بدلا من استخدام DOMParser استخدام SAXParser.هذا يقرأ من تيار الإدخال أو القارئ حتى تتمكن من الحفاظ على XML على القرص بدلا من تحميل كل شيء في الذاكرة.

SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
factory.setNamespaceAware(true);

SAXParser parser = factory.newSAXParser();

XMLReader reader = parser.getXMLReader();
reader.setErrorHandler(new SimpleErrorHandler());
reader.parse(new InputSource(new FileReader ("document.xml")));

نصائح أخرى

استخدام libxml, الذي ينفذ التحقق من صحة و وقد وضع الجري.

شخصيا أود أن استخدام XMLStarlet والتي لديها واجهة سطر الأوامر ، ويعمل على تيارات.هو مجموعة من الأدوات التي بنيت على Libxml2.

ساكس " و " libXML سوف تساعد ، كما سبق ذكره.هل يمكن أيضا محاولة زيادة حجم كومة الذاكرة المؤقتة أقصى لمدة JVM باستخدام-Xmx الخيار.E. g.تعيين الحد الأقصى حجم الذاكرة إلى 512 ميجابايت: java -Xmx512m com.foo.MyClass

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