我们有一个使用MSXML2和vb6的遗留代码,工作正常。最近我们将项目转换为VB.NET,当xml变大时我们遇到了msxml的问题 - 基本上它已挂起。 在谷歌搜索该问题后,我们发现这篇文章说 .NET应用程序不支持使用MSXML http://support.microsoft.com/kb/815112
我想知道是否有人知道第三方组件可以模仿msxml的功能,但仍可以使用.NET。另一个选择是重写代码的这些部分(使用system.xml或linq)是非常痛苦的,因为在我们的应用程序中广泛使用了MSXML。
谢谢, 皮尼。
答案 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 |
+-------------------------------------+-------------------------------------+
如果您很幸运,您可以用旧的替代新的并运行它。