VisualBasic CreateObject()

时间:2013-10-07 12:41:48

标签: vb.net

我遇到了CreateObject的问题。它一直告诉我这是一个未宣布的元素。我需要添加一些具体的参考资料吗?

excel等的参考已经在其中,并且不再从MSDN获取任何信息。

Public Function BBANtoBIC(ByVal BBAN As String) As String
        Dim xd As Object
        xd = CreateObject("msxml2.domdocument.4.0")
        xd.Load("http://www.ibanbic.be/IBANBIC.asmx/BBANtoBIC?value=" & BBAN)
        Do While xd.readyState <> 4
            DoEvents()
        Loop
        BBANtoBIC = xd.Text
    End Function

2 个答案:

答案 0 :(得分:2)

“msxml2.domdocument.4.0”可能未安装在您的系统中。从2001年开始。你可能会使用“Msxml2.DOMDocument.6.0”。见Using the right version of MSXML in Internet Explorer

答案 1 :(得分:1)

通过该函数读取,它所做的只是返回文档的文本。它并没有真正对xml做任何事情。因此,您可以将其替换为:

Public Function BBANtoBIC(ByVal BBAN As String) As String
    Using wc As New System.Net.WebClient()
        Return wc.DownloadString("http://www.ibanbic.be/IBANBIC.asmx/BBANtoBIC?value=" & BBAN)
    End Using
End Function

我只看到为什么这可能不是真的两个原因。第一个是你是在计算on xml文档对象,以确保你下载的内容确实是有效的,格式正确的xml,在这种情况下,应该在调用函数的位置附近有错误处理代码。第二个是如果DoEvents等待循环用于程序响应而不是等待xml解析器...这也是非常糟糕的设计。以这种方式使用DoEvents()会产生副作用。如果关于等待xml解析器,则新代码应完全避免该延迟。

如果你确实需要解析/验证xml,那么.Net框架中至少有三种不同的方法可以实现这一点而无需依赖CreateObject()。不应该在.Net中使用CreateObject()。的自从