MSXML2和.net - 遗留代码

时间:2011-07-13 15:58:21

标签: xml vb.net vb6 msxml legacy-code

我们有一个使用MSXML2和vb6的遗留代码,工作正常。最近我们将项目转换为VB.NET,当xml变大时我们遇到了msxml的问题 - 基本上它已挂起。 在谷歌搜索该问题后,我们发现这篇文章说 .NET应用程序不支持使用MSXML http://support.microsoft.com/kb/815112

我想知道是否有人知道第三方组件可以模仿msxml的功能,但仍可以使用.NET。另一个选择是重写代码的这些部分(使用system.xml或linq)是非常痛苦的,因为在我们的应用程序中广泛使用了MSXML。

谢谢, 皮尼。

2 个答案:

答案 0 :(得分:4)

不幸的是,不,不是我听说过的。 Microsoft确实有另一个名为XmlLite的实用程序,有时听起来它适用于托管代码,但有时不适用。我从来没有尝试过,但它至少值得研究。否则,您唯一的选择是不升级到.Net或迁移到托管XML。 MS确实有一篇可能对您有帮助的文章HOW TO: Implement Common MSXML Tasks in System.xml By Using Visual C# .NET

但如果您决定重新编写托管,那么由于您使用的是VB.Net,我强烈建议您查看XML Literals。使用XML时,XML非常容易。

答案 1 :(得分:0)

我没有从MSXML升级到System.XML的丰富经验,但是到目前为止,我发现两者非常相似。如果我的代码使用的MSXML的占用恰好相对较小,那可能就很幸运。

就目前而言,Mobilize.NET发布了一份指南,映射了两者之间的一些常见类(不确定它是否100%全面),

+-------------------------------------+-------------------------------------+
|                Class                |               Maps To               |
+-------------------------------------+-------------------------------------+
| MSXML2.DOMDocument                  | System.Xml.XmlDocument              |
| MSXML2.DOMNodeType                  | System.Xml.XmlNodeType              |
| MSXML2.IXMLDOMAttribute             | System.Xml.XmlAttribute             |
| MSXML2.IXMLDOMCDATASection          | System.Xml.XmlCDataSection          |
| MSXML2.IXMLDOMDocument              | System.Xml.XmlDocument              |
| MSXML2.IXMLDOMElement               | System.Xml.XmlElement               |
| MSXML2.IXMLDOMNamedNodeMap          | System.Xml.XmlNamedNodeMap          |
| MSXML2.IXMLDOMNode                  | System.Xml.XmlNode                  |
| MSXML2.IXMLDOMNodeList              | System.Xml.XmlNodeList              |
| MSXML2.IXMLDOMParseError            | System.Exception                    |
| MSXML2.IXMLDOMText                  | System.Xml.XmlCharacterData         |
| MSXML2.tagDOMNodeType               | System.Xml.XmlNodeType              |
| MSXML2.IXMLDOMCharacterData         | System.Xml.XmlCharacterData         |
| MSXML2.IXMLDOMDocumentFragment      | System.Xml.XmlDocumentFragment      |
| MSXML2.IXMLDOMComment               | System.Xml.XmlComment               |
| MSXML2.IXMLDOMEntity                | System.Xml.XmlEntity                |
| MSXML2.IXMLDOMEntityReference       | System.Xml.XmlEntityReference       |
| MSXML2.IXMLDOMImplementation        | System.Xml.XmlImplementation        |
| MSXML2.IXMLDOMNotation              | System.Xml.XmlNotation              |
| MSXML2.IXMLDOMProcessingInstruction | System.Xml.XmlProcessingInstruction |
| MSXML2.IXMLDOMDocumentType          | System.Xml.XmlDocumentType          |
| MSXML2.FreeThreadedDOMDocument      | System.Xml.XmlDocument              |
| MSXML2.FreeThreadedDOMDocument40    | System.Xml.XmlDocument              |
| MSXML2.DOMDocument40                | System.Xml.XmlDocument              |
+-------------------------------------+-------------------------------------+

如果您很幸运,您可以用旧的替代新的并运行它。