سؤال

هذه هي المرة الأولى التي تستخدم فيها Stax لتحليل مستندات XML (لا تزال في مرحلة التعلم). أثناء عملية تحليل مستند XML باستخدام XMLStreamReader وإنشاء نسخة من المستند باستخدام XmlStreamWriter، واجهت التحذير التالي تمثل كتعليق في إخراج الكاتب:

 <!-- Exception scanning External DTD Subset.  True contents of DTD cannot be determined.  Processing will continue as XMLInputFactory.IS_VALIDATING == false. -->

لقد فهمت سبب التحذير، لكنني أردت أن أصبح خطأ بدلا من أن أصبحت تحذيرا بصمت، لذلك حاولت ضبط Xmlinplatary.is_Validating إلى TRUE:

 XMLInputFactory factory = XMLInputFactory.newInstance();
 factory.setProperty(XMLInputFactory.IS_VALIDATING, Boolean.TRUE);

لكن ما سبق رمى استثناء بالنسبة لي:

استثناء في الخيط "الرئيسي" java.lang.ilg.ilgalargumentException: قيمة حقيقية IsValidating غير معتمدة في com.sun.org.apache.xerces.internal.impl.propertymanager.setproperty (propertymanager.java: 1550) في com.sun.xml. Internal.Stream.xmlinpultoryImpl.SetProperty (XmlinputaFactoryimpl.java:257) في com.test.test2.helper.sgmldocumentparser.parse (sgmldocumentparser.java:83) في com.test.test2.helper.test.main (Test.java: 66)

إذن ما هو الخطأ في نهجي؟

شكرا!

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

المحلول

يبدو أن تطبيق Sun's Stax لا يدعم التحقق من DTD. يمكنك محاولة استخدام woodstox. بدلا من ذلك، يبدو أنه يدعم التحقق من الصحة.

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