问题标签 [msxml]

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 投票
3 回答
54179 浏览

http - MSXML2.XMLHTTP 发送方法适用于早期绑定,后期绑定失败

下面的代码有效。但是,如果我注释掉该行Dim objRequest As MSXML2.XMLHTTP并取消注释该行Dim objRequest As Object,它会失败并显示错误消息:

参数不正确

为什么,我能做些什么(如果有的话)?


科里,是的,我知道我必须这样做才能让我的代码在不引用 MSXML 类型库的情况下工作。这不是这里的问题。Dim objRequest As Object无论我是否使用,使用时代码都会失败

Set objRequest = NEW MSXML2.XMLHTTP与参考,或

Set objRequest = CreateObject("MSXML2.XMLHTTP")没有参考。

0 投票
4 回答
9190 浏览

c++ - MSXML2::IXMLDOMDocument2Ptr->GetXML() 弄乱了我的字符串!

全部,

这是我的代码

在这一点上,我的字符串被破坏了(开始时只有几个汉字,然后是垃圾)。看起来像一个编码问题。

我还尝试了以下方法:

但我仍然得到相同的结果。

即使我调用 GetXML() 而不更改 xml 文档中的任何内容,我仍然会得到垃圾。

此时,如果我尝试将损坏的指针分配给另一个指针,它将引发错误:

试图恢复写保护内存。这通常表明其他内存已损坏。

有什么建议吗?

编辑1:

我发现这与 XML 字符串的大小有关。如果它发生在给定的 XML 字符串上并且我减小了大小(保持相同的模式),它将正常工作。看起来 MSXML2::DOMDocument40 对大小有限制?详细来说,如果我有超过 16407 个字符,就会发生这种情况。我还有一个 GetXML 将检索 RUBBISH - 如果它 <= 16407 一切正常。

编辑2:

罗迪是对的 - 我错过了那_bstr_t是一门课......

敲响任何铃铛?

干杯

0 投票
3 回答
1181 浏览

multithreading - MSXML XSL 转换多线程性能争用

我有一个多线程服务器 C++ 程序,它使用 MSXML6 并不断解析 XML 消息,然后应用准备好的 XSLT 转换来生成文本。我在具有 4 个 CPU 的服务器上运行它。每个线程都是完全独立的,并使用自己的变换对象。线程之间不共享任何 COM 对象。

这很好用,但问题是可扩展性。运行时:

  1. 使用一个线程,每个线程每秒可以进行大约 26 次解析+转换。
  2. 有 2 个线程,我得到大约 20/s/线程,
  3. 带 3 个线程,18/s/线程。
  4. 有 4 个线程,15/s/线程。

由于线程之间没有共享任何东西,我期望接近线性的可伸缩性,因此 4 线程应该比 1 快 4 倍。相反,它只快 2.3 倍。

它看起来像一个经典的争用问题。我编写了测试程序来消除我的代码中存在争用的可能性。我正在使用 DOMDocument60 类而不是 FreeThreadedDOMDocument 类,以避免不必要的锁定,因为文档永远不会在线程之间共享。我努力寻找缓存行错误共享的任何证据,但至少在我的代码中没有。

另一个线索,每个线程的上下文切换速率 > 15k/s。我猜罪魁祸首是 COM 内存管理器或 MSXML 中的内存管理器。也许它有一个全局锁,必须为每个内存分配/释放获取和释放。我简直不敢相信,在这个时代,内存管理器的编写方式并不能很好地适应多线程多 CPU 场景。

有谁知道是什么导致了这种争用或如何消除它?

0 投票
3 回答
2741 浏览

c++ - 如何从 MSXML::IXMLDOMElement 中获取值数据

我有一个 xml 字符串

我想要得到的是父级内部的数据原始 xml。我正在使用 MSXML

正在返回

.

返回 davelauriegabrielle

如果我想获得,我应该使用什么功能?

有人知道关于这些功能的一些好的文档吗?我所看到的一切都是一个相关的噩梦。

0 投票
1 回答
645 浏览

java - XmlTextAttribute 和 CDATA

我们有一部分应用程序,我们的用户可以通过定制的所见即所得组件创建包含 HTML、JavaScript 和 CSS 的对象。这些对象在某些时候被序列化,然后被反序列化。但是,由于我们的用户/客户遍布全球,他们有时会在反序列化过程中输入引起不满的字符。最近,我看到&#X1D;出现在来自中国用户的序列化 XML 中,后来由于 XML 是使用 MSXML2 通过一些 Java 代码加载而导致问题(在 .NET 和 System.Xml 中同样不是问题,但这是另一个问题)。我们目前坚持使用 MSXML2,因此需要单独解决。

一个建议是更改一些字段以序列化为 CDATA,而不是像现在这样的 HtmlTextAttribute。

我怎样才能做到这一点,它会对在这种变化之前序列化的数据产生影响吗?

0 投票
1 回答
995 浏览

asp.net - 使用 ServerXMLHTTP 超时发布 xml

我在两个网站上工作。一个是现有的经典 asp 站点,它将 xml 发布到新的 asp.net (.net 3.5) 网站。经典的 asp 站点在 vbscript 中使用 msxml 的 serverxmlhttp 对象来发送这个 xml。在我对 asp.net 站点进行看似无关的更改之前,整个过程都有效。

当我添加几行使用 System.Speech.Synthesis 从文本生成 wav 文件的代码时,经典的 asp 网站 serverxmlhttp.send 命令超时。据我所知,asp.net 页面工作正常,它通过几行新代码没有问题(生成 wav 文件)。导致问题的几行语音代码在超时之前就完成了。

看起来 asp.net 页面实际上正在向不再发送的经典页面发送某种确认。我还应该指出,语音代码抛出了一个异常,说它需要是异步的,我通过将 Async="true" 添加到 . 但是,它在 async="true" 时有效,只是那些语音线破坏了它。“问题代码”只是

有没有人对可能出现的问题或我可以用来帮助调试的内容有任何建议?

0 投票
4 回答
17686 浏览

xml - 在 delphi 中使用 msxml 进行架构验证

我正在尝试根据它引用的模式验证 XML 文件。(使用 Delphi 和 MSXML2_TLB。)(相关部分)代码如下所示:

这会导致缓存被加载schemas.length > 0

我该怎么办?

0 投票
5 回答
11417 浏览

c++ - 如何在 Visual Studio 2008 Express(无 ATL 类)中使用 msxml 而不会变得疯狂?

这不是一个真正的问题,因为我已经找到了解决方案。我花了很多时间,这就是为什么我想在这里解释一下。

Msxml 基于 COM,因此在 C++ 中使用它并不容易,即使您有有用的类来处理内存分配问题。但是编写一个新的 XML 解析器要困难得多,所以我想使用 msxml。

问题:

我能够在 Internet 上找到足够的示例来使用 msxml,借助CComPtr(智能指针避免必须手动为每个 IXMLDOMNode 调用 Release())、CComBSTR(将 C++ 字符串转换为字符串的 COM 格式)和CComVariant. 这 3 个有用的类是 ATL 类,需要一个#include <atlbase.h>.

问题:Visual Studio 2008 Express(免费版)不包括 ATL。

解决方案:

使用comutil.hand comdef.h,其中包括一些简单的辅助类:

  • _bstr_t或多或少地替换CComBSTR
  • _variant_t或多或少地替换CComVariant
  • _com_ptr_tCComPtr通过使用间接替换_COM_SMARTPTR_TYPEDEF

小例子:

0 投票
2 回答
1603 浏览

javascript - 有没有办法从 MSXML XPath 评估器获得非节点结果?

我知道 selectNode/selectSingleNode 方法的名称实际上表明它们旨在返回一个节点,但是也许还有其他方法或设置可用于使 XPath 评估器返回其他类型的数据(这也是有效的 XPath 结果)

抛出错误“表达式不返回 DOM 节点”

我想查询 oDocument.selectSingleNode("concat(@day, '-', @month, '-', @year") 并得到一个结果(这可以通过标准 DOM XPath API)。确实我可以查询节点然后用 DOM 遍历它们,但是这将是低效的方式。

0 投票
2 回答
8969 浏览

xml - 为什么 MSXML 中的 createProcessingInstruction 会生成不完整的输出?

以下 VBA 代码生<?xml version="1.0"?>成为输出。

为什么encoding="UTF-8"左撇子?