对VB6中SetProperty的澄清

时间:2013-05-07 10:54:53

标签: c# java vb6

我正在将一个VB6项目移植到C#。我有以下VB6代码,我不完全理解:

 Dim xmlDoc As Object
 Set xmlDoc = CreateObject("MSXML2.DomDocument." & sVer)
 xmlDoc.setProperty "NewParser", True

之前我从未做过VB编码。有人可以解释上述行的作用以及Java或C#等语言中的等效代码是什么。谢谢!

2 个答案:

答案 0 :(得分:1)

快速了解这一点:

Set xmlDoc = CreateObject("MSXML2.DomDocument." & sVer)

此行实例化了Microsoft的W3C DOM标准实现的特定版本。你不应该指定版本 - 你应该这样做:

Set xmlDoc = CreateObject("MSXML2.DomDocument")

甚至更好,添加对最新“Microsoft XML n.n”库的引用并执行:

Dim xmlDoc As MsXml2.DomDocument
Set xmlDoc = New MsXml2.DomDocument

有这么多版本的原因是因为同一个库有几个略有不兼容的版本。并且不同的已安装应用程序可能各自使用不同的版本。

至于:

xmlDoc.setProperty "NewParser", True

这是Microsoft对DOM的非标准扩展的示例。为了支持各种特定于Microsoft的行为,他们添加了“辅助属性”的概念,它在官方W3C DOM标准中没有基础。在这种特定情况下,它将“NewParser”属性设置为True(请参阅http://msdn.microsoft.com/en-gb/library/windows/desktop/ms767616%28v=vs.85%29.aspx)。这意味着除了MSXML6.DLL之外的任何版本都没有。

没有直接的Java版本,但是此示例允许您基于字符串创建DOM对象:

How do I load an org.w3c.dom.Document from XML in a string?

在此示例中,setProperty()调用不存在。

.NET等价物(在C#中)是:

using System.xml

function doIt()
{
    XmlDocument doc = new XmlDocument();
}

XmlDocument中也不存在SetProperty()。

答案 1 :(得分:0)

在不了解VB6的情况下,听起来非常像XML解析。按照建议在google.com上投掷MSXML2.DomDocument,将this document from MSDN作为#1结果,这将导致您朝着正确的方向前进。