将模式添加到我的Xml文档需要很长时间才能完成

时间:2017-03-22 10:21:48

标签: .net xml initialization

我有一个用于编辑xmls的程序。

我首先将基本模式添加到我的Xml中,如下所示

    Sub Initialize()
        document.Schemas.Add("http://www.w3.org/2000/09/xmldsig#",
                             ".\XSD\xmlsig.xsd")
        ' Dummy data here
        document.Schemas.Add("http://needed.url.org/docs/xsd/v1.2/", 
                             ".\XSD\myxsd_v1.2.xsd")
        initialized = True
    End Sub

问题是第二个架构添加需要很长时间才能完成,超过60秒而不是第一个架构的13ms。

我已经注意到了:

  • 第二个链接指向未找到的页面,但我不确定是否是问题。
  • 尝试自己添加一个XmlUrlResolver并使用这些属性没有任何区别。
  • 禁用我的网络适配器使操作瞬间进行,因此我猜测网络是一个因素而xsd验证不是,但我可能是错的。

我做错了吗? 我怎样才能加快这段代码的速度?导致应用程序初始化文档等待70多秒的原因并不理想。

编辑1:分析网络数据包我发现xmldsig-core-schema.xsd的GET请求被解雇但是如果我尝试在本地添加模式我得到一个关于我的文档中不允许的DTD的例外,不知道关于如何解决这个问题

编辑2:修改了请求上述架构的xsd,现在程序正确加载本地版本

1 个答案:

答案 0 :(得分:1)

W3C故意延迟对常用模式和DTD请求的响应,以鼓励用户优先访问本地副本;他们几年前开始这样做,因为他们无法处理每秒钟发出的数千个请求。

进行一些网络监控以查看正在请求的资源(可能不是在您的应用程序中直接命名的资源,而是间接引用的其他资源);然后确保您的XmlResolver使用本地副本响应这些请求。