gpt4 book ai didi

javascript - 使用 ClearScript 将 XmlDocument 公开给 JScript 时遇到困难

转载 作者:行者123 更新时间:2023-12-03 07:52:42 27 4
gpt4 key购买 nike

上下文:Windows Azure; Visual Studio 社区 2015;清晰脚本; JScript

我在向使用 ClearScript 执行的 JScript 公开 XmlDocument 对象时遇到问题。

我正在使用实例化 JScript 解释器

JScriptEngine JSengine = new JScriptEngine(WindowsScriptEngineFlags.EnableDebugging | WindowsScriptEngineFlags.EnableJITDebugging);

为了实例化 XmlDocument 对象,我已经尝试了这两种方法

using System.Xml;
...
JSengine.AddHostType("CSXmlDocument", typeof(XmlDocument));
...

...
JSengine.AddCOMObject("CSXmlDocument", "MSXML2.DOMDocument");
...

我使用它执行 JScript 脚本

...
object answer = JSengine.Evaluate(File.ReadAllText(rulesetFilename));
...

我的困难在于如何在脚本中使用 CSXmlDocument 对象。我已尝试以下所有方法均无济于事。

var xmlObj1 = CSXmlDocument;
var xmlObj2 = new CSXmlDocument;
var xmlObj3 = CSXmlDocument();
var xmlObj4 = new CSXmlDocument();

使用 AddCOMObject 定义 CSXmlDocument 时,第二次到第四次调用会出现错误

Unable to evaluate the expression. Operation not supported. Unknown error: 0x8013baff.

第一次调用只允许我访问三个方法:EqualsGetHashCodeGetType

当使用 AddHostType 定义 CSXmlDocument 时,第一个仅给出上述三个方法。第二次调用似乎可以访问完整的属性和方法集(至少这是 VS2015 在调试 session 中所说的),但是,当我尝试使用 LoadXml 方法时,我得到

xmlObj2.LoadXml(body)
Unable to evaluate the expression. Operation not supported. Unknown error: 0x8013baff.

我目前正在解决两个可能的问题:

  1. 字符编码,根据another StackOverflow posting .
  2. HTML-XML 标记冲突。

最佳答案

嗯,我不确定你在做什么不同的事情,但以下对我有用:

using (var JSengine = new JScriptEngine())
{
JSengine.AddHostType("CSXmlDocument", typeof(XmlDocument));
JSengine.AddHostType("CSConsole", typeof(Console));
JSengine.Execute(@"
var doc = new CSXmlDocument();
doc.LoadXml('<Hello>World</Hello>');
var node = doc.FirstChild;
CSConsole.WriteLine('{0} {1}!', node.Name, node.InnerText);");
}

这会产生预期的输出“Hello World!”使用 ClearScript 5.4.4。它对你有用吗?

关于javascript - 使用 ClearScript 将 XmlDocument 公开给 JScript 时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34938235/

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