我正在使用XmlReader
根据提供的架构验证XML文件。
为此,我创建了XmlReaderSettings
的实例,并将其ValidationType
设置为ValidationType.Schema
,将Schemas
属性设置为XxmlSchemaSet。草案代码就像
XmlReaderSettings rSettings = new XmlReaderSettings();
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add(null, xsdPath1);
schemaSet.Add(null, xsdPath2);
schemaSet.Add(null, xsdPath3);
rSettings.Schemas.Add(schemaSet);
rSettings.ValidationType = ValidationType.Schema;
XmlReader validatingReader = XmlReader.Create(sr, rSettings);
sr是StreamReader
这实际上是遗留代码,但仍有许多问题需要解决。我知道schemaSet.Add(null, xsdPath2)
看起来很讨厌和丑陋,我将要修复。
我想问的是,由于我提供了三个xsd文件,我应该期待什么性能命中? xsd以优先级递减的顺序给出。所有这些XML模式都是版本化的,所以我添加了所有这些模式以便有一个回退机制。
我在想的是JIT编译器只编译xsd1尝试用它解析XML文件,如果失败则移动到下一个。我不希望所有三个xsd都在内存中。
这是我感到困惑的地方。在指定多个模式文件时,我可以获得什么样的性能?
我希望改进遗留代码库,因此性能始终处于最佳状态。
答案 0 :(得分:0)
猜测模式没有太大变化,您可以考虑加载/编译模式并将其作为模式集添加到缓存中。
这样可以防止每次要加载需要验证的文档时重新加载/重新编译模式。
希望这有帮助,