2013-10-23 123 views
0

我感覺自己已經撞上了牆。我正在研究使用Saxon庫執行XSLT轉換的Web應用程序。該應用程序曾經是一個控制檯應用程序,只是簡單地將輸出打印到控制檯,但之後,我們決定要從網絡控制應用程序。Console.SetOut不起作用時該怎麼辦?

我寫了一個自定義的TextWriter類,輸出到網頁並使用Console.SetOutConsole.SetError將我的控制檯輸出指向網頁。

但是,Saxon正在使用某種似乎不受Console.SetOut影響的Java兼容性庫,所以當我在Web上運行應用程序時,內部Saxon錯誤不會出現在網頁上。

我的問題的簡短版本是:假設我打電話Console.SetOut來更改控制檯文本輸出到的位置,它不起作用。然後怎樣呢?

回答

0

聽起來像你將不得不進入撒克遜源並改變一點。

0

令人驚訝的是Console.SetOut和Console.SetError不起作用。 .NET上的Saxon使用通過使用IKVMC交叉編譯爲.NET的OpenJDK庫,我期望輸出流的映射可以使這些方法起作用。如果您認爲這裏存在問題,那麼報告地點位於Saxonica支持站點(位於saxonica.plan.io),並舉例說明問題的重現。

但是,重定向撒克遜錯誤消息的更好方法可能是註冊您自己的ErrorListener。您無法直接在.NET Saxon API中執行此操作,但可以通過從XsltTransformer獲取Controller並使用javax.xml.transform.ErrorListener接口的實現調用setErrorListener方法來完成此操作。

+0

我們已經通過Jeroen Frijters證實Console.SetOut和Console.SetError不影響IKVM應用程序的Java部分寫入System.out和System.err的數據。 –

相關問題