2011-03-21 50 views
0

我試圖使用該文件:serialize函數來使用eXist-db將一些內容寫入文件。使用文件:序列化以寫入文件與eXist分貝

這是我使用的代碼,它只是一個登錄和serialize函數的調用。 someFunction只是返回一個包含某些內容的節點。

設$空:= XDB:登錄( 「/ DB」, 「* 」,「 * 」), $ someBool:=文件:序列化(本地:someFunction(),「的test.txt」, 「」)

我得到的非常有幫助的錯誤是:

發現錯誤

消息:錯誤null

我在Ubuntu上使用1.4.0版,並啓用了文件模塊(並構建它)。我在這裏錯過了什麼?

謝謝!

回答

0
let $null := xdb:login("/db", "*", "*") 

首先,讓我們排除一些問題:第二個和第三個參數應該是dba用戶的用戶名和密碼。請參閱xmldb:login()file:serialize()的文檔。

+0

是的我知道,但對於這個例子在stackoverflow我用星星取代他們。 – rx1234 2011-03-23 10:32:10

+0

好的,很好。下一步:這是你的整個查詢嗎?你有「返回」條款嗎?沒有「迴歸」的「讓」是孤兒表達。如果你有一個完整的查詢,你可以簡化文件:serialize(),用替換它。運氣好的話? – joewiz 2011-03-24 23:15:28

0

這是我想要寫文件的功能,所以我只是嘗試寫一些測試內容:

declare function local:getSomething() as node(){ 
    let $s := "something" 
    return 
     <test>{$s}</test> 
}; 
declare function local:mainPage() as node()? 
{ 
    let $null := xdb:login("/db", "*", "*"), 
     $someBool := file:serialize(local:getSomething(),"test.txt","") 
    return 
    <test>Succes!</test> 
}; 
1

我有過OP同樣的問題。
原來你的序列化函數的第三個參數是錯誤的。

此:

$someBool := file:serialize(local:getSomething(),"test.txt","") 

應該是這樣的:

$someBool := file:serialize(local:getSomething(),"test.txt",()) 

的第三個參數必須是一個序列,而不是字符串。

希望它有幫助。