首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XmlSchemaSet添加xsd文件来验证Xdocument花费的时间太长,超过一分钟

XmlSchemaSet添加xsd文件来验证Xdocument花费的时间太长,超过一分钟
EN

Stack Overflow用户
提问于 2020-04-02 07:27:14
回答 2查看 123关注 0票数 1

我正在验证和Xdocument到xsd文件,一切正常,但是当我将Xsd文件添加到XmlSchemaSet对象时,加载大约需要一分半钟,模式并不小,但只占用50kb,在我看来,这不应该占用那么多的加载时间。我已经尝试过其他较小的xsd文件,并在1ms内加载。我也尝试作为一个嵌入资源,结果相同。我有什么问题吗?或者有没有办法以某种方式将Xmlschemaset加载为一个类,这样它就不会每次都加载,任何帮助都将不胜感激。

以下是代码

代码语言:javascript
复制
 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链接:

代码语言:javascript
复制
https://github.com/fel-sat-gob-gt/cat/blob/desa/xsd/GT_Documento-0.2.0.xsd
EN

回答 2

Stack Overflow用户

发布于 2020-04-02 15:11:12

该架构从位于的W3C网站导入架构文档

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

W3C积极地阻止您对此类资源进行操作访问,因为它们无法处理流量;因此,它们会人为地对请求施加30秒的延迟。您需要创建此资源的本地副本,并通过更改schemaLocation或使用某种解析器重定向请求来调整验证以获取本地副本。

票数 0
EN

Stack Overflow用户

发布于 2020-04-03 09:02:30

问题如前所述,只需使用以下代码添加一个XmlPreloadedResolver,如果有多个xsd,则需要添加所有这些xsd。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60981884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档