public void XmlProcessorTest() { using (XmlTextReader reader = new XmlTextReader("SqlMap_Test_Configure.config")) { IConfigurationStore store = new DefaultConfigurationStore(); using (XmlConfigProcessor processor = new XmlConfigProcessor()) { processor.Process(reader, store); CheckResource(store); } } }
/// <summary> /// Should obtain the contents from the resource, /// interpret it and populate the <see cref="IConfigurationStore"/> /// accordingly. /// </summary> /// <param name="configurationStore">The store.</param> public override void ProcessResource(IConfigurationStore configurationStore) { Contract.Require.That(configurationStore, Is.Not.Null).When("retrieve argument configurationStore in ProcessResource method"); Contract.Assert.That(Resource, Is.Not.Null).When("process Resource in ConfigurationInterpreter"); using (Resource) { //validateSqlMap字段的有无,决定了是否进行文件规范格式的检查 IConfiguration setting = configurationStore.Settings[ConfigConstants.ATTRIBUTE_VALIDATE_SQLMAP]; if(setting !=null)//不为空,检查格式 { bool mustValidate = false; Boolean.TryParse(setting.Value, out mustValidate);//进一步确定是否必须检查 if (mustValidate) { XmlDocument document = new XmlDocument(); document.Load(Resource.Stream); //调用规范检查类 SchemaValidator.Validate(document.ChildNodes[1], "SqlMapConfig.xsd"); } } Resource.Stream.Position = 0; using (XmlTextReader reader = new XmlTextReader(Resource.Stream)) { //具体到真正处理配置文件的类对象上 using (XmlConfigProcessor processor = new XmlConfigProcessor()) { processor.Process(reader, configurationStore); } } } if (logger.IsInfoEnabled) { logger.Info("Configuration Store"); logger.Info(configurationStore.ToString()); } }