gpt4 book ai didi

javascript - JScript/VBScript 错误

转载 作者:行者123 更新时间:2023-11-29 20:25:57 25 4
gpt4 key购买 nike

我正在尝试使用不同的 xslt 样式表让脚本自动将 xml 文件转换为多个 html 文件。但是,无论我尝试什么,都会出现错误。我已经在 VBscript 和 JScript 中尝试过,但都出现错误。 xml 文件为 537 KB,xsl 文件为 5 KB。

这是 JScript 中的迭代 1。该脚本适用于我的一个样式表(创建较小 html 文件的样式表),但在创建较大 html 文件的样式表上,它在 outstr 上给我一个“无效的过程调用或参数”(好像 outstr 没有'没有正确返回)错误:

var xsl = new ActiveXObject("MSXML2.DomDocument.6.0");
xsl.async = false;
var boolval = xsl.load("../Commands/commands.xsl");
if(!boolval)
{
WScript.Echo("XSL load error");
WScript.Quit();
}
var xml = new ActiveXObject("MSXML2.DomDocument.6.0");
xml.async = false;
boolval = xml.load("../Commands/commands.xml")
if(!boolval)
{
WScript.Echo ("XML load error " );
WScript.Quit();
}

var fso = new ActiveXObject("Scripting.FileSystemObject");
var outstr = xml.transformNode(xsl);

var ofl = fso.CreateTextFile("../Commands/commands.html", true, false);
ofl.Write (outstr);
ofl.Close();

所以这是迭代 2,改为使用 transformNodeToObject 方法。在这种情况下,我在 msxml6.dll 中收到“未指定错误”代码 80004005:

var xsl = new ActiveXObject("MSXML2.DomDocument.6.0");
xsl.async = false;
var boolval = xsl.load("../Commands/commands.xsl");
if(!boolval)
{
WScript.Echo("XSL load error");
WScript.Quit();
}
var xml = new ActiveXObject("MSXML2.DomDocument.6.0");
xml.async = false;
boolval = xml.load("../Commands/commands.xml")
if(!boolval)
{
WScript.Echo ("XML load error " );
WScript.Quit();
}

var result = new ActiveXObject("MSXML2.DomDocument.6.0");
xml.transformNodeToObject(xsl, result);

result.save("../Commands/commands.html");

我的直觉告诉处理器无法处理创建这么大的文件。这是对的,还是我做错了什么。如果这只是一个大小问题,我可以在 vbscript/jscript 中使用一些其他库/对象来完成工作吗?

最佳答案

在任何情况下,几 kB 的 XML 都不会破坏 MSXML。你机器的内存是极限,所以文件大小不是问题。此外,宿主语言(JScript 或 VBScript)的选择完全无关紧要,没有什么是 VBScript 可以做而 JScript 做不到的,反之亦然。你在这里做COM,所以语言也不是问题。停止朝那个方向看是安全的。

这留下了一种可能性。你一定做错了什么。 ;-) 这可能包括您计算机上的 MSXML 配置或安装问题,甚至可能是错误的文件系统访问设置或进程凭据。

由于我无法在您的代码中立即发现问题,并且您没有提供任何 XML 进行测试,我只能推荐一些可能有助于调试的东西。尝试,不一定按此顺序:

  • 检查您的所有 XML 文件是否格式正确且编码正确。我相信你已经完成了。将它们加载到 IE 中就足够了,如果可行,它们就很好。
  • 删除并重新安装 MSXML,确保您还安装了旧版本 (4.0)。
  • 下载msxsl.exe from Microsoft并在命令行上进行转换,以检查它们是否有效 - 这个小工具在内部使用 MSXML,过去从未让我失望过。
  • 尝试使用 "MSXML2.DomDocument.4.0" 编写代码,因为无论如何都没有充分的理由使用 6.0(除了“越新越好”,我猜)。
  • 只是排除它作为一个原因,以管理员级别的用户身份在另一台机器上运行整个过程。查看错误是否可重现。
  • 如果一切都失败了,请将文件上传到某处,将链接发布到此处,我也会查看它们。

希望这对您有所帮助。

关于javascript - JScript/VBScript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1051711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com