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!!!

Post a comment