簡體   English   中英

Java-Saxon API-以“附加”模式寫入文件

[英]Java - Saxon API - Write to file in “append” mode

我正在使用Saxon 8來解析XQuery並分析API返回的xml文件。 問題在於即使構造函數使用的是true參數,傳入的FileWriter參數始終以“覆蓋”模式使用。

我所擁有的例子:

sqc.compileQuery(new FileReader(xq.getCurrentXQueryFile())).run(dqc, new StreamResult(new FileWriter(xq.getResultsFile(), true)), props);

sqc是一個StaticQueryContext。 “ true”是FileWriter構造函數使用附加模式的可選參數。

因此,正如我所說,它仍然在每個“ compileQuery”上重寫文件。 我嘗試檢查源,但對於我的水平來說確實太重了...

因此,如果有人知道是否存在“干凈”的方式來在單個文件中獲取多個結果,請謝謝! :-)

PS:我知道每次啟動都可以創建一個文件,然后將所有文件的內容合並為一個文件很容易,但這不是我所說的“干凈”。

您正在使用非常古老的Saxon版本(不確定:“ Saxon 8”的范圍可以是8.0到8.9,這是大約在2001年到2007年之間發布的序列;當前版本是9.8)。 您還使用了一個非常老的API,該API在一定程度上仍受支持,但在后續發行版中進行了很大的更改,這意味着很難為您提供准確的建議。 我強烈建議您繼續使用Saxon 9.8,並使用為穩定而設計的s9api API,實踐證明它非常穩定。

話雖如此,很難確切地知道這里出了什么問題。 撒克遜人只是要將字符寫到您提供的Writer中。 它無法做任何其他事情。 根據Java規范,您要提供的Writer可以將數據追加到文件中。 一種可能是編寫者在編寫后沒有被適當關閉,但是我們無法在如此舊的版本上調查這種可能性。

因此,我認為您應該嘗試使用Saxon的最新版本,在一個簡單而完整的獨立程序中提供完整的repro; 我們可以幫助您找到錯誤。

實際上,這是Saxon 9 HE而不是8,我發現了問題。 在附加模式下,標簽“

props.setProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");

現在我還有其他問題,但尚未實現為api,我的xml對sax解析器無效(沒有根節點...因為我從xquery附加了根節點2次,解析器需要一個真實的根節點,但我將對此進行管理。 ;-))。

再次感謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM