В предыдущей статье я представил вам метод использования XSD для проверки файла конфигурации Mybatis SQLMapper (1). Друзья, которые это нужно, могут ссылаться на это.
Запишите файл XSD, затем посмотрите, как использовать файл XSD для его проверки, и проанализировать файл SQLMapper, то есть реализовать метод DoParsesqlmapperresourcewithSchema ().
Чтобы реализовать эту функцию, есть два основных требования:
(1) Совместимость: она должна быть совместимой с собственной конфигурацией Mybatis. Есть два уровня совместимости. Одним из них является использование DTD -проверки. Как упоминалось ранее, нет проблем с совместимостью при выполнении исходного процесса; Другой - использовать проверку XSD, но она также должна быть совместимой с собственной конфигурацией Mybatis. С одной стороны, эта совместимость гарантируется из файла XSD, измененного выше, а с другой стороны, его также необходимо гарантировать от анализа XML.
(2) Расширенность: цель модификации состоит в расширении, поэтому расширяемость также является основным требованием. Однако масштабируемость не является произвольной, и она также должна быть расширена в соответствии со спецификацией, которая является пользовательским файлом XSD.
Чтобы удовлетворить эти два основных требования, следующая моя идея, в основном опираясь на пользовательское пространство имен Spring:
1. Создайте EntityReSolver и прочитайте файл конфигурации указанного режима в рамках ClassPath, например: "ClassPath*: **/dysd-*-namespaces.ini"
2. Определите мета -информацию пространства имен в файле INI, например:
Используйте пространство имен в качестве имени раздела. Схема и анализатор ниже представляют XSD -файл и класс реализации Parser в пространстве имен соответственно. Таким образом, вы можете найти файл проверки на основе пространства имен XSD в XML и получить запись.
иллюстрировать:
Конфигурация Apache Commons обеспечивает API для чтения для файлов формата INI
Весной я использовал Meta-Inf/Spring.schemas и Meta-Inf/Spring.handlers для хранения файлов XSD и классов реализации анализатора. Здесь я изменил его на использование центральной конфигурации INI -файла
Поскольку он читает файл INI, который удовлетворяет символам подстановочного знака под всеми путями классов, он может легко расширить другие пространства имен. Что касается того, как использовать XSD для проверки на Java, я не буду вдаваться в подробности здесь
Я разлагаю анализ XML на три элемента: анализ контекста, анализ файла. Метод Doparsesqlmapperresourcewithschema () также очень краткий:
Protected void Doparsesqlmapperresourcewithschema (конфигурация конфигурации, ресурс Mapperlocation) {isqlmapperparsercontext context = new sqlmapperparsercontext (configuration); xmlparserutils.parsexml (context, mapperlocation);};Интерфейс анализатора выглядит следующим образом:
Публичный интерфейс iParser <E Extends Iparsercontext> {public void parse (e parsercontext, string parse);Контекст анализа и классы реализации анализатора делятся на три уровня по очереди:
(1) Общий контекст анализа:
Публичный интерфейс iParsercOntext {public replyReporter getProblemReporter (); public EventListener getEventListener (); Public SourceExtractor getSourceExtractor (); публичная среда getEnvironment ();}Класс реализации анализаторов на соответствующем уровне в основном отвечает за загрузку проанализированных файлов (например, загрузку подстановочных значений в совокупность объектов ресурса), обеспечение не выполнено повторного анализа и обеспечения одновременного выполнения.
(2) контекст диапазона XML
Публичный интерфейс ixmlparsercontext extends iparsercontext {public boolean isnamespaceaware (); Общедоступный документ getDocumentloader (); Public EntityResolver getEntityResolver (); public errorhandler geterrorHandler (); public xmlparserdelegate getDelegate ();}Класс реализации анализатора на соответствующем уровне в основном отвечает за преобразование ресурса в объект документа и его проверку в процессе преобразования.
(3) контекст анализа SQLMAPPER
Публичный интерфейс isQlmapperparsercontext Extends ixmlparsercontext {public configuration getConfiguration ();}Класс реализации анализатора на соответствующем уровне в основном отвечает за поиск анализатора в пространстве имен, где находится корневой элемент, и использование анализатора для анализа документа.
Наконец, анализ делегируется в класс Schemasqlmappernamespaceparser в файле конфигурации INI. Однако, поскольку этот класс должен быть настроен в текстовом файле, не удобно для конструкторов с параметрами, поэтому он дополнительно делегирован Schemasqlmapperparserdelegate:
Открытый класс SchemasqlmapperNamespaceparser реализует inamespaceparser <isqlmapperparsercontext> {@overridepublic void init () {} @OverridePublic void parse (isQlmapperparpercercontext parsercontext, документ документ, ресурс ресурса) (schemasqlpartegratepartegratepartegratepartegratepartegratepartegratepartegratepartegratePartegratePartegrateReG Schemasqlmapperparserdelegate (parsercontext, document, resource); delegate.parse ();}@overdepublic void destory () {}}На этом этапе проверка XSD была завершена, и был найден портал диапазона XML. Последующий реальный анализ находится в Schemasqlmapperparserdelegate.
Выше приведено метод (2) для использования XSD для проверки файла конфигурации MyBatis SQLMapper, который редактор представил вам. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!