.net XmlDocument.LoadXml()挂起几分钟
我有一个从HTTP请求解析XML响应的例程,我使用XmlDocument.LoadXml来帮助实现这一点。我指望这个方法在坏XML上抛出异常,并在成功时返回加载的XmlDocument对象 我没想到的是,它在加载文档时会挂起几分钟。当我在测试环境中运行此代码时,它会100%挂起几分钟。在我看来是.NET中的一些错误.net XmlDocument.LoadXml()挂起几分钟,.net,xml,vb.net,xmldocument,.net,Xml,Vb.net,Xmldocument,我有一个从HTTP请求解析XML响应的例程,我使用XmlDocument.LoadXml来帮助实现这一点。我指望这个方法在坏XML上抛出异常,并在成功时返回加载的XmlDocument对象 我没想到的是,它在加载文档时会挂起几分钟。当我在测试环境中运行此代码时,它会100%挂起几分钟。在我看来是.NET中的一些错误 Dim tstring As String = "" tstring &= "" & vbCrLf tstring &= "" &a
Dim tstring As String = ""
tstring &= "" & vbCrLf
tstring &= "" & vbCrLf
tstring &= "<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">" & vbCrLf
tstring &= "" & vbCrLf
tstring &= "<html> xmlns=""http://www.w3.org/1999/xhtml"" >" & vbCrLf
tstring &= "<head><title>" & vbCrLf
tstring &= " Error" & vbCrLf
tstring &= "</title></head>" & vbCrLf
tstring &= "<body>" & vbCrLf
tstring &= "</body>" & vbCrLf
tstring &= "</html>" & vbCrLf
Dim MyXmlDoc As New XmlDocument
MyXmlDoc.LoadXml(tstring)
Dim tstring As String=“”
t字符串&=“”&vbCrLf
t字符串&=“”&vbCrLf
t字符串&=“”&vbCrLf
t字符串&=“”&vbCrLf
t字符串&=“xmlns=”“http://www.w3.org/1999/xhtml“”>“&vbCrLf
t字符串&=“”&vbCrLf
t字符串&=“错误”&vbCrLf
t字符串&=“”&vbCrLf
t字符串&=“”&vbCrLf
t字符串&=“”&vbCrLf
t字符串&=“”&vbCrLf
将MyXmlDoc设置为新的XmlDocument
MyXmlDoc.LoadXml(tstring)
文档中可以删除以防止其挂起的特定行是:
tstring &= "<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">" & vbCrLf
t字符串&=“”&vbCrLf
我是否必须搜索“loadxml调用正在解析doctype以进行验证,因此它必须获取该url-在这种情况下速度很慢。您可以在浏览器中进行测试 另一个问题-引述如下: 在.NET 4.0中,XmlTextReader有一个名为DtdProcessing的属性。 当设置为DTD处理时。忽略它应禁用DTD处理 及 doc.xmlsolver=null
对于.NET 3.5应该可以工作。是的,我想知道。我查看了.NET 3.5对象,想找到一种关闭抓取的方法,因为我认为这可能是问题所在,但没有问题。对于vb.NET和3.5 MyXmlDoc.XmlResolver=Nothing,这是W3C关于这个问题的有趣背景:您看到通过XEleme使用LINQ到XML的相同性能吗nt.Load(uri)或XDocument.Parse(tstring)?另外,为了将来的参考,请尝试使用StringBuilder而不是过度的连接来构建字符串。Jim,为了简化问题的解释,我在这里避免使用字符串生成器。显然,我的代码与此完全不同,因为XML是从HTTP请求读取的。