في المقالة السابقة ، قدمت لك طريقة استخدام XSD للتحقق من ملف تكوين MyBatis 'SQLMapper (1). يمكن للأصدقاء الذين يحتاجون إليها الرجوع إليها.
اكتب ملف XSD ، ثم راجع كيفية استخدام ملف XSD للتحقق منه ، وتحليل ملف sqlmapper ، أي ، تنفيذ طريقة doparsqlmapperResourceWithsChema ().
من أجل تنفيذ هذه الوظيفة ، هناك مطلبان أساسيان:
(1) التوافق: يجب أن يكون متوافقًا مع التكوين الأصلي لـ MyBatis. هناك مستويان من التوافق. واحد هو استخدام التحقق من DTD. كما ذكرنا سابقًا ، لا توجد مشكلة في التوافق عند اتباع العملية الأصلية ؛ والآخر هو استخدام التحقق من XSD ، ولكنه يحتاج أيضًا إلى أن يكون متوافقًا مع التكوين الأصلي لـ MyBatis. من ناحية ، يتم ضمان هذا التوافق من ملف XSD الذي تم تعديله أعلاه ، ومن ناحية أخرى ، يجب ضمانه أيضًا من تحليل XML.
(2) قابلية التوسيع: الغرض من التعديل هو التوسع ، وبالتالي فإن التوسع هو أيضًا مطلب أساسي. ومع ذلك ، فإن قابلية التوسع ليست تعسفية ، ويجب أيضًا تمديدها وفقًا للمواصفات ، وهو ملف XSD مخصص.
من أجل تلبية هذين المتطلفين الأساسيين ، فإن ما يلي هو فكرتي ، والتي ترسم بشكل أساسي على مساحة الربيع المخصصة:
1. إنشاء entityResolver وقراءة ملف التكوين الخاص بالوضع المحدد ضمن classpath ، مثل: "classpath*: **/dysd-*-أسماء الأسماء.
2. تحديد معلومات التعريف المساحة في ملف INI ، مثل:
استخدم مساحة الاسم كاسم القسم. يمثل المخطط والمحلل أدناه فئة تطبيق XSD و Parser في مساحة الاسم على التوالي. وبهذه الطريقة ، يمكنك العثور على ملف التحقق بناءً على مساحة اسم XSD في XML والحصول على إدخال تحليل.
يوضح:
يوفر تكوين المشاع Apache واجهة برمجة تطبيقات للقراءة لملفات تنسيق INI
في الربيع ، استخدمت meta-inf/spring.schemas و meta-inf/spring.handlers لتخزين ملفات XSD وفئات تنفيذ المحلل. هنا قمت بتعديله لاستخدام التكوين المركزي ملف INI
نظرًا لأنه يقرأ ملف INI يرضي أحرف WildCard ضمن جميع ClassPaths ، يمكنه بسهولة توسيع مساحات الأسماء الأخرى. أما بالنسبة لكيفية استخدام XSD للتحقق في Java ، فلن أخوض في التفاصيل هنا
أقوم بتحليل تحليل XML إلى ثلاثة عناصر: تحليل السياق ، وتوحل الملف. طريقة doparsqlmapperResourceWithSchema () هي أيضا موجزة جدا:
void doparseSqlMapperResourceWithsChema (تكوين التكوين ، mapperlocation) {isqlmapperparsercontext context = new SqlMapperSerContext (التكوين)واجهة المحلل هي كما يلي:
الواجهة العامة iParser <e يمتد iParserContext> {public void parse (e parsercontext ، string location) ؛ public void parse (e parsercontext ، string [] locationpatterns) ؛ public void parse (e parsercontexتنقسم سياق التحليل ودروس تنفيذ المحلل النصفي إلى ثلاثة مستويات بدورها:
(1) سياق التحليل العام:
الواجهة العامة iParserContext {public problemReporter getProPliter () ؛ public eventlistener getEventListener () ؛ Public SourceExtractor GetSourceExtor () ؛ Public Environment GetEnvironment () ؛}إن فئة تنفيذ المحللين على المستوى المقابل مسؤول بشكل أساسي عن تحميل الملفات المحفورة (مثل تحميل الأسلاك البرية في مجموعة من كائنات الموارد) ، مما يضمن عدم إجراء تحليل متكرر ، وضمان التنفيذ المتزامن.
(2) سياق تحليل XML
الواجهة العامة ixmlparsercontext يمتد iParserContext {public boolean isNamesPaceAware () ؛ DocumentLoader Public GetDocumentLoader () ؛ Public IttityResolver GetEntityResolver () ؛ Error Handhandler GeterRorHandler () ؛ XmlParserDelegate getDelegate () ؛} العامةإن فئة تنفيذ المحلل المحلل على المستوى المقابل مسؤول بشكل أساسي عن تحويل المورد إلى كائن مستند والتحقق منه أثناء عملية التحويل.
(3) سياق التحليل sqlmapper
الواجهة العامة isQlMapperParserContext تمتد ixmlparsercontext {التكوين العام getConfiguration () ؛}إن فئة تنفيذ المحلل المحلل على المستوى المقابل مسؤول بشكل أساسي عن العثور على المحلل في مساحة الاسم التي يوجد بها عنصر الجذر ، واستخدام المحلل لتحليل المستند.
أخيرًا ، يتم تفويض التحليل إلى فئة SchemasQlMapperNamesPaceParser في ملف تكوين INI. ومع ذلك ، نظرًا لأن هذه الفئة تحتاج إلى تكوين في ملف نصي ، فليس من المناسب للمصممون مع المعلمات ، لذلك يتم تفويضه بشكل أكبر إلى SchemasQlMapperParserDelegate:
schemasqlmappernamespaceparser تنفذ inamespaceparser <isqlmapperparsercontext> {overridepublic void init () {}@overridepublic void parse (isqlmapperparsercontextxtxt ، document ، resource resource) schemasqlmapperParserDelegate (parsercontext ، وثيقة ، مورد) ؛ depate.parse () ؛}@OutdRidepublic void destory () {}}في هذه المرحلة ، تم الانتهاء من التحقق من XSD وتم العثور على بوابة تحليل XML. التحليل الحقيقي اللاحق هو في SchemasQlMapperParserDelegate.
ما سبق هو الطريقة (2) لاستخدام XSD للتحقق من ملف تكوين MyBatis الخاص بـ SQLMapper الذي قدمه لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!