2016-02-01 78 views
0

我現在正在開發一點XML和ExtendScript。我不知道我明白爲什麼,當我運行下面的腳本中,ESTK不會引發錯誤:爲什麼ExtendScript不會在無效的XML字符串上拋出錯誤?

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。據Adobe的JavaScript工具指南246頁:

If a valid string is supplied, returns a new XML object encapsulating the XML code. If the XML code cannot be parsed, throws a JavaScript error. If an existing object is supplied and the new operator is used, returns a copy of the object; otherwise, returns the object itself.

我想我的問題是什麼樣的字符串將在new XML()方法實際上拋出一個錯誤?

+0

當您刪除try catch語句時會發生什麼? – fabianmoronzirfas

+3

首先,您在'new XML'行中增加了''''。其次,XML構造函數可以得到一個字符串,但是如果你嘗試寫'new XML(' Ziki

+0

確認@Ziki寫了什麼。這又是Extendscript – fabianmoronzirfas

回答

1

語法x = new XML (y);是創建XML類型的新對象x,具有y,其中y必須形成有效 XML的字符串表示的初始值。

從ESTK幫助:

XML XML (text: string)
Parses an XML string. Throws an error if the XML is incorrect.

因此,以下將全部失敗:

Ziki的<asdf:「有一個錯誤創建XML對象:語法錯誤:在第1行XML錯誤 - 未關閉的令牌 「

<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"> 
+1

感謝@Jongware的澄清。 Adobe應該將其添加到他們的文檔:) – ariestav

相關問題