HTTPリクエストからのXML応答を解析するルーチンがあり、これを行うためにXmlDocument.LoadXmlを使用しています。私はこのメソッドが不正なXMLで例外をスローし、成功したときにロードされたXmlDocumentオブジェクトを返すことを期待しています。
私が予想していなかったのは、ドキュメントの読み込み中に数分間ハングすることです。このコードをテスト環境で実行すると、100%の時間数分間ハングします。私には.NETのバグのように見えます...
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)
ドキュメントがぶら下がらないようにするために削除できるドキュメントの特定の行は次のとおりです。
tstring &= "<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">" & vbCrLf
文字列内で「<!DOCTYPEhtml」を検索する必要がありますか?表示された場合はLoadXml()を呼び出さないでください。これについての私の懸念は、このメソッド内で他の落とし穴が私を待っていることです。