【问题标题】:Why doesn't ExtendScript throw an error on invalid XML string?为什么 ExtendScript 不对无效的 XML 字符串抛出错误?
【发布时间】:2016-02-01 12:12:31
【问题描述】:

我现在正在使用 XML 和 ExtendScript 进行一些开发。我不确定我是否理解为什么当我运行以下脚本时,ESTK 不会抛出错误:

var random_string = "asdsfjlkj";

try {
  testXML = new XML(random_string);
} catch (err) {
  $.writeln("There was an error creating an XML object:" + err);
}

我希望$.writeln 字符串会出现在 ESTK 的控制台中,但事实并非如此。相反,我只得到Result: undefined。根据第 246 页的 Adob​​e 的 Javascript 工具指南:

如果提供了有效字符串,则返回一个封装 XML 代码的新 XML 对象。如果无法解析 XML 代码,则引发 JavaScript 错误。 ???如果提供了现有对象并使用了 new 运算符,则返回该对象的副本;否则,返回对象本身。

我想我的问题是new XML() 方法实际上会抛出什么样的字符串?

【问题讨论】:

  • 删除 try catch 语句后会发生什么?
  • 首先在new XML 行中有额外的)。其次,XML构造函数可以得到一个字符串,但是如果你尝试写new XML('<asdf');你会得到一个Error。
  • 确认了@Ziki 所写的内容。这又是 Extendscript 的怪癖之一
  • @Ziki 我更新了代码,因此删除了多余的括号。谢谢。

标签: xml extendscript


【解决方案1】:

语法x = new XML (y); 是创建一个XML 类型的新对象x,初始值为y,其中y 必须形成有效 XML 的字符串表示形式。

来自 ESTK 帮助:

XML XML(文本:字符串
解析 XML 字符串。如果 XML 不正确,则引发错误。

因此,以下将全部失败:

Ziki 的<asdf:“创建 XML 对象时出错:SyntaxError: XML error in line 1 - Unclosed token”

<abc a='1>: ".. - 未关闭的令牌"

<abc a=1>: “.. - 格式不正确(无效令牌)”

<123>: ".. - 格式不正确(无效令牌)"

<abcd><b></abcd>: ".. - 标签不匹配"

<?xml verson="1.0"?><abc>: ".. - 语法错误"(这里,verson 需要为 version

这些(每一行都是一个单独的输入字符串)是可以的:

abcd>
<abcd>
<abcd><a> (this automatically gets expanded to <abcd><a/></abcd>)
<abc a="1">

【讨论】:

  • 感谢@Jongware 的澄清。 Adobe 应该将此添加到他们的文档中:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
  • 2022-07-21
相关资源
最近更新 更多