问题标签 [msxml6]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2028 浏览

msxml - 升级到 MsXml6.dll

我在将应用程序的 Microsoft XML 核心从 msxml3.dll 升级到 msxml6.dll 时遇到问题。我将 vcproj 和我的头文件更改为指向 msxml6 头和库文件。我还更改了 msxml6 的类 ID,以使用 CoCreateVariant() 函数创建一个文档分析器。

在执行过程中,我发现我的应用程序抛出异常处理并中止。然后我使用 Visual Studio 进行调试,发现 getElementByTagName() 函数在使用 msxml6.dll 库时返回一个空指针,这反过来又导致进一步的引用导致中止,并且它与 msxml3.dll 一起工作正常。

有谁知道为什么由于 msxml6.dll 而出现这个“未处理的异常”?我该如何解决?

0 投票
1 回答
7127 浏览

delphi - 加载 Windows-1252 XML 文件时“调用 OS 函数失败”

编辑:

错误确实在处理中;parseError也失败并揭示了真正的错误;请参阅该错误的后续问题

老问题:

不知何故,有时下面的代码在使用 Delphi XE 中的 msxml 单元加载 XML 时会产生异常。它在使用 MSXML6 的 Windows XP Professional x86 SP3 和使用 MSXML6 的 Windows 7 Ultimate x64 SP1 上失败。

在 XmlDocument.load 方法期间发生此错误:

我将 XML 缩减为下面找到的 XML。

这是 XML 文件的十六进制转储:

这是 XML:

为什么会发生错误?

(XML 在 .NET 和其他不使用 MSXML6 的环境中加载得非常好)。

——杰伦

0 投票
1 回答
9753 浏览

msxml - 加载有效的 Windows-1252 文档“系统错误:-2146697210”时出错

不知何故,有时下面的代码在加载有效的 Windows-1252 XML 时会产生错误。

它在使用 MSXML6 的 Windows XP Professional x86 SP3 上失败。
它在使用 MSXML6 的 Windows 7 Ultimate x64 SP1 上成功。

注意:下面的代码是用 Delphi 编写的,但等效代码在其他环境中也会失败。

在 XmlDocument.load 方法期间发生此错误:

我将 XML 缩减为下面找到的 XML。

这是 XML 文件的十六进制转储:

这是 XML:

为什么会发生错误?

(XML 在 .NET 和其他不使用 MSXML6 的环境中加载得非常好,它在 Windows 7 Ultimate x64 SP1 上也能正常工作)。

——杰伦

0 投票
2 回答
201 浏览

c++ - 如何在 C++ 中解析 xsl:include 指令(不能使用 .NET 框架)

我需要从数据库中加载一个 xslt 并将其保存在内存中,以便它可以被另一个 xslt 包含。

我知道您可以使用 .NET 框架和 xmlPreLoadedResolver 类来执行此操作,但不幸的是,我们不允许将其编写为 .NET dll。

有谁知道是否可以使用 msxml6 C++ 接口来做到这一点?

0 投票
1 回答
319 浏览

domdocument - 如何将 MSXML 文档从版本 1 升级到版本 6?

我的应用程序使用 MSXML 版本 1 (MSXML.DOMDocument) 以 XML 格式存储用户文档。
我想升级到 MSXML6 (Msxml2.DOMDocument.6.0)。问题是新版本并不总是可以读取旧文档。

原因是旧的 MSXML 解析器没有正确地将非拉丁字符编码为 UTF-8,而新的解析器拒绝加载这些文档。

我的问题 - 如何读取/转换客户的现有文件以在 MSXML6 中可读?

0 投票
3 回答
34331 浏览

xml-namespaces - 解析 MSXML 时引用未声明的命名空间前缀

我该如何解决

微软的 msxml 实现有问题吗?


我正在使用来自政府网站的 XML 提要,其中包含我需要解析的值。xml 包含命名空间:

运行 XPath 查询:

失败并出现错误:


编辑

如果我编辑原始 XML 以删除所有名称空间的使用:

查询/rdf/item/statistics/exchangeRate/baseCurrency不会失败,并返回节点:

如何让 Microsoft XML 使用命名空间?


编辑 2

我尝试将SelectionNamespaces添加到 DOMDocument 对象:

现在 xpath 查询没有失败,但它也没有返回节点:

也可以看看

0 投票
1 回答
3702 浏览

c++ - COM 和 MSXML 的问题(仅限 64 位)

我们正在将一个巨大的应用程序从 32 位移植到 64 位。这个应用程序有一些外部库,我们要么禁用它们,要么使用它们的 64 位版本。我们还通过我们自己编写的 COM 方法访问数据库。我们使用的是在 32 位上运行良好的 MSXML4。

MSXML4 没有 64 位版本,所以我们升级到 MSXML6。我们只使用了 MSXML 的一些特性,尤其是 DOM 解析器,所以我们唯一做的就是替换以下行:

然后我们尝试做这样的事情:

这在 32 位下运行良好。但在 64 位下,调用 loadXML 函数时 msxml6.dll 会引发异常。虽然 CreateInstance 返回一个有效的指针并且返回码是 S_OK。调试输出中还打印了一条错误消息:

一开始我们以为我们使用库的方式是错误的,但是后来我们发现了下面的事情。如果我们在初始化我们自己的 COM 组件之前读取我们的 XML 文件,它就可以工作。所以现在看起来我们自己的 COM 组件正在“破坏” COM 库。但这怎么可能呢?

我们进行了一些试验,只有当我们尝试使用 MSXML 时才会出现问题。所有其他 COM 对象都在工作。除了有一次 IFileDialog(我认为它也是一个 COM 类)在使用过程中崩溃了。

在我们调用 COM 组件的 CoCreateInstance 之后,问题就出现了,这在我们的例子中没有多大作用。而且我在我们的 COM 服务器上看不到任何明显的错误,例如 64 位数据类型。

所以问题是:

64 位版本的 MSXML 有问题吗?

还是我们在 COM 服务器的 64 位端口上犯了一个致命的错误?

有没有人遇到过类似的问题?

任何帮助都会很感激,因为我现在真的被困住了,因为我不知道如何找到真正的问题。

0 投票
0 回答
1008 浏览

c++ - 无法打开包含文件 msxml6.h - 错误,VS2005 c++

我的 c++ VS2005v 应用程序中有一个致命错误。

无法打开包含文件 msxml6.h。没有这样的文件或目录

我正在使用 VS2005 在服务器 2008 上工作,在我拥有 VS2008 和 VS2010 之前,我已经卸载了两者,然后重新安装 2005,但仍然发生错误。我已经为服务器 2008 和框架 3.5 和 SP1 安装了平台 sdk。仍然发生错误。

注意:我在 microsoft sdk 文件夹中看到该文件。 我必须使用VS2005

请帮忙!

0 投票
1 回答
1696 浏览

msxml - MSXML 6、用户/密码验证、ResolveExternals

如果必须从受用户/密码保护的 URL 加载和解析 XML 资源,据我所知,您不能只使用 MSXML DOM.Load()。没有地方可以指定凭据。

但是,如果您使用 XMLHTTPRequest 获取资源并将其解析为 DOM(通过其 .responseXML 属性),您将无法为 .resolveExternals 属性指定值。

当您使用默认为 True 的 MSXML 3、4(甚至 5)时,这或多或少会奏效,但是在 MSXML 6 中,它默认为 False:

resolveExternals 属性

在 MSXML 3.0、MSXML 4.0 和 MSXML 5.0 中,默认的resolveExternals 值为 True。在 MSXML 6.0 中,默认设置为 False。

如果此属性设置为 False,则不会解析任何外部包含和导入。

有没有我没有看到的解决方法?通常我需要解决外部问题,尤其是在处理 XSD 或 WSDL 时。

还是我在自欺欺人,也许 .resolveExternals 在使用 XMLHTTPRequest 时永远不适用(仅 DOM.Load() 调用)?

0 投票
4 回答
2914 浏览

delphi - 如何在 Delphi 中使用 MSXML SAX 组合大型 XML 文件

编辑:GitHub 上提供了我的(不完整且非常粗糙的)XmlLite 标头翻译

在不使用 DOM 的情况下,将 Delphi 中的大量 XML 文档与 MSXML 进行简单组合的最佳方法是什么?我应该使用 COM 组件 SAXReader 和 XMLWriter 吗?有什么好的例子吗?

转换是从许多大文件 (60MB+) 到一个大文件 (~1GB) 的所有内容元素从根(容器)的简单组合。

我使用 XmlWriter 和 XmlReaders 在以下 C# 代码中工作,但它需要在本机 Delphi 进程中发生:

我们已经在系统的其他部分使用了 MSXML DOM,如果可能的话,我不想添加新组件。