KB-'Invalid procedure call or argument' when writing text file
1 |
var fitem = fso.CreateTextFile(destFolder + "\\" + str + ".txt", true);
fitem.Write(srcTree.transformNode(xsltTree));
fitem.Close();
WScript.Echo("Processing " + str);
上面這段該死的Code花了我近三個小時Debug!
srcTree是成功載入XML的XMLDOM, xsltTree則是成功載入XSLT的XMLDOM,transformNode結果要輸出時(橘色那行),系統回報"Invalid procedure call or argument"(無效的程序呼叫或引數)。第一個直覺---絕對是XSLT出了問題!
用盡多種方式驗證後(還包含了將XML一截截砍短這種耗時的測試,當XML變短時,"有時"就不會出錯,但無法理出頭緒),才死心不再找XSLT的碴。靈機一動,將程式改成:
var txt=srcTree.transformNode(xsltTree);
fitem.Write(txt);
Bingo!! txt變數正常地接回transformNode的結果,問題居然是出在fitem.Write這列上!(我應該早點想到的) 該不會是Unicode Issue吧?
改成fso.CreateTextFile(destFolder + "\\" + str + ".txt", true, true)後,錯誤訊息消失了! 確認問題起因於transformNode轉出的結果包含Unicode字元,而CreateTextFile時未宣告Support Unicode。Google了一下,找到類似的說法,Case Closed!
Comments
# by wssgily
Bingo!!!