سؤال

هل هناك طريقة للحصول على المزيد من المعلومات المفيدة عن خطأ التحقق من صحة؟ يوفر XmlSchemaException رقم السطر والموقف من الخطأ الذي لا معنى له بالنسبة لي. مستند XML بعد كل شيء ليست حول تمثيلها نصية عابر. أود أن تحصل على خطأ تعداد (أو رمز خطأ) تحديد ما عند الخطأ، اسم العقدة (أو كسباث) لتحديد مصدر المشكلة بحيث ربما أستطيع أن محاولة إصلاحه.

وتحرير: أنا أتحدث عن وثائق XML صالح - ليس فقط صالحة ضد مخطط معين

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

المحلول

ويمكنك تحقيق ذلك، نوعا ما، من خلال إنشاء XmlReader التي تحتوي على مخطط ومن ثم استخدامه لقراءة من خلال عقدة تدفق الدخل من عقدة XmlReaderSettings. يمكنك تتبع مشاركة عقدة القراءة ولديك فكرة جيدة عن مكان وجودك في وثيقة عندما يحدث خطأ التحقق من صحة.

وأعتقد أنه إذا حاولت هذه العملية، سوف تكتشف أن هناك الكثير من أخطاء التحقق من الصحة (مطلوب على سبيل المثال عنصر مفقود) حيث مفهوم العقدة الخطأ لا معنى كبير. نعم، العنصر الأصل هو بوضوح ما هو الخطأ في هذه الحالة، ولكن ما أثار حقا كان خطأ القارئ تواجه وسم النهاية دون أن يرى أي وقت مضى العنصر المطلوب، وهذا هو السبب في خط الخطأ ونقطة المركز في وسم النهاية.

نصائح أخرى

في تجربتي، كنت محظوظا للحصول على رقم السطر وتحليل الموقف.

وكنت قد تنظر التحقق عبر DTD التي يمكن أن <م> أحيانا إعطاء أخطاء قليلا أكثر إثارة للاهتمام، ولكن، على مشروع أعمل حاليا على، ونحن تحقق من استخدام XSLTs. التحويل الشيكات بناء الجملة و تقارير الأخطاء كما أنتج تحويل النص. وأود أن تنظر في هذا الطريق إذا كنت تريد أكثر ودية والتحقق من الخطأ. بالنسبة لنا، ويبلغ حجم انتاجها فارغة يعني عدم وجود أخطاء، وإلا فإننا الحصول على بعض التفاصيل لطيفة من تجهيز XSLT على ما هو الخطأ وأين.

وأنا شخصيا لست متأكدا من كيفية الحصول على خطأ أكثر تفصيلا، typcially و فتح المستند وانتقل إلى الموقع المذكور يمكنك بسهولة العثور على خطأ.

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

ويبدو أن هذا ليست مهمة سهلة. الجواب روبرت Rossney تأتي الأقرب إلى programmaticaly حل مشكلتي ولذا فإنني سوف تقبل أن في الوقت الراهن. سوف تستمر في استخدام الحل XSL. يمكن لأي شخص أن يجد طريقة أفضل لحل أخطاء التحقق من الرد على هذا الموضوع.

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