【问题标题】:unrecognizable code in classic ASP; need .NET conversion经典 ASP 中无法识别的代码;需要.NET 转换
【发布时间】:2015-12-04 04:44:08
【问题描述】:
oXML = Server.CreateObject("Msxml2.DOMDocument.4.0")

oNode = oXML.createElement("CommonCustomerSearch")

有人能解释一下上面的代码行是做什么的吗?我对第一行更感兴趣,因为它编写的方法在到达该行时退出,因此显然没有设置变量oXML。我知道 oXML 应该设置为某种 COM 对象,但你能解释一下“Msxml2.DOMDocument.4.0”部分吗?那是什么,在哪里,它在 .NET 中会是什么样子(这段代码是经典的 asp)?我也不知道上面的第二行代码是什么,但是该方法甚至从未达到它,因此,如果您对它在做什么有任何想法,那就太好了。谢谢

【问题讨论】:

    标签: asp.net vb.net asp-classic


    【解决方案1】:

    这是使用旧的 MSXML COM 对象的代码。 .NET 中的 XML 命名空间将使用相似的语法做几乎完全相同的事情。并绕过 COM(一件好事)。将这些语句转换为使用 .Net 的 XML。

    Msxml2.DOMDocument.4.0 是 COM 对象名称。

    如果 createobject 存在于该方法中,那么可能有问题。

    在 .net 中,您可以说 Dim MyXMLDocument as New XML.XMLDocument 等。

    【讨论】:

      【解决方案2】:

      经典的 ASP 代码使用了XML DOM 库。第一行(如果使用set 关键字正确编码)在内存中创建一个XML 文档。第二行创建一个名为 CommonCustomerSearch 的 XML 节点。

      .NET Framework 3.5+

      如果您想迁移到 .NET 3.5 或更高版本,您可以使用 System.Linq.Xml 做同样的事情

      var xmlDoc = new XDocument(new XElement("CommonCustomerSearch"));
      

      您可以阅读Getting Started Guide for LINQ to XML 了解更多信息。

      .NET 框架 2.0

      听起来您仅限于 .NET 2.0,因此您可以使用 System.Xml 以不那么性感的方式完成此操作。

      XmlDocument doc = new XmlDocument();
      doc.LoadXml("<CommonCustomerSearch/>");
      

      【讨论】:

      • 是的,我想试试这个,但 System.Linq.Xml 是 .NET 4。我正在开发 .NET 2。
      • 你能推荐你的例子的 2.0 版本吗?上面的评论者提到了 XML.XMLDocument 来创建 XML 文档,但是我将如何创建节点?
      • System.Linq.Xml 实际上在 3.5 中可用。我将编辑我的答案,向您展示如何在 2.0 中执行此操作
      【解决方案3】:

      Msxml2.DOMDocument.4.0 是一个 COM 对象,该行应该创建该类的一个实例。我不知道这是否是所有代码,但在初始化对象实例时需要使用 Set 关键字。所以实际上应该是

      Set oXML = Server.CreateObject("Msxml2.DOMDocument.4.0")
      Set oNode = oXML.createElement("CommonCustomerSearch")
      

      Msxml 类是 xml 文档的抽象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-12
        • 1970-01-01
        相关资源
        最近更新 更多