XmlSchemaSet Добавление файла xsd для проверки Xdocument занимает слишком много времени, более одной минуты - PullRequest
1 голос
/ 02 апреля 2020

Я проверяю и Xdocument для и xsd-файл, и все работает нормально, но когда я добавляю Xsd-файл в объект XmlSchemaSet, загрузка занимает около полутора минут, схема не маленькая, а занимает всего 50 КБ, что в мое мнение не должно так много загружать. Я попытался с другими меньшими файлами xsd и загрузить в 1 мс. Также используется как ресурс для встраивания с такими же результатами. Есть ли у меня что-то не так или есть способ загрузить Xmlschemaset как класс, чтобы он не загружался каждый раз, любая помощь будет принята с благодарностью.

Вот код

 XmlSchemaSet schemaSet = new XmlSchemaSet();
 schemaSet.Add(null, "c:\\temp\\GT_Documento-0.2.0.xsd");
 XDocument xml = XDocument.Load("c:\\temp\\xmlinvoice.xml");
 xml.Validate(schemaSet, ValidationCallback); 

XSD-ссылка:

https://github.com/fel-sat-gob-gt/cat/blob/desa/xsd/GT_Documento-0.2.0.xsd

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Проблема была, как указано, просто добавили XmlPreloadedResolver, используя следующий код, если есть несколько xsd, вам нужно добавить их все.

var resolver = new XmlPreloadedResolver();
resolver.Add(new Uri("http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core- 
schema.xsd"), File.ReadAllBytes(@"c:\temp\xmldsig.xsd"));
schemaSet.XmlResolver = resolver;
schemaSet.Add(null, "http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd");
0 голосов
/ 02 апреля 2020

Схема импортирует документ схемы с веб-сайта W3 C по адресу

http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd

W3 C, активно отговаривая вас от оперативного доступа к таким ресурсам, потому что они не могут обрабатывать трафик; поэтому они накладывают искусственную 30-секундную задержку на запрос. Вам необходимо создать локальную копию этого ресурса и настроить проверку для получения локальной копии, либо изменив schemaLocation, либо воспользовавшись каким-либо средством распознавания для перенаправления запроса.

...