2

一部の files.xml をデータベースとして管理するために、XQuery と BaseX を使用しようとしています。

basexclient を使用して basexserver にクエリを送信しています。たとえば、次のような library.xml という単純なファイルがあります。

<library>
   <book>gone with the wind</book>
   <book>the thornbirds</book>
</library>

ノードを追加したいので、basexclientターミナルから次を送信します。

XQUERY insert node <book>Dracula</book> as last into doc('library.xml')//library

そして、私はメッセージを受け取ります

クエリは 10.5 ミリ秒で実行されました

しかし、ファイルには何も変更されていません。変更をコミットするコマンドはありますか?

4

3 に答える 3

4

デフォルトでは、ファイルのメモリ インスタンスの更新はディスクに反映されません。これは、 WRITEBACKオプションをオンにすることで変更できます。この振る舞いが驚くべきものであることには同意します。ユーザーが誤ってローカル ファイルを変更するのを防ぐために導入されました。

一般的な注意: ローカル ファイルを更新する場合は、スタンドアロン モードで BaseX を使用することをお勧めします。クライアント/サーバー アーキテクチャで作業している場合 (つまり、 を使用し、 を使用しbasexclientていない場合basex)、サーバーは別の作業ディレクトリから起動されている可能性があり、doc() 関数で相対パスを解決できない場合があります。

于 2014-12-05T12:34:17.130 に答える