LoginSignup
0
1

More than 5 years have passed since last update.

BaseX のインストールと Scala から BaseX を操作 (Ubuntu)

Posted at

BaseXのインストールと起動

環境

cat /etc/lsb-release
# DISTRIB_ID=Ubuntu
# DISTRIB_RELEASE=14.04
# DISTRIB_CODENAME=trusty
# DISTRIB_DESCRIPTION="Ubuntu 14.04.4 LTS"
arch
# x86_64

BaseX のインストールと BaseXServer の起動

# install
sudo apt-get install basex
# start as service
basexserver -S

typesafe-activator のインストール

なくてもいいけど便利だから使います(インストール方法)

BaseXClient の利用

プロジェクト作成

project名は basex-scala で進めていきます.

activator new basex-scala minimal-scala

クライアントライブラリの取得

Java によるデフォルトの実装が最もサポートされそうなので,それを Scala で利用(クライアント一覧)

cd basex-scala
mkdir -p libs src/main/java/org/basex/examples/api

basex_dir=`pwd`/libs/basex
lib_file=basex-examples/src/main/java/org/basex/examples/api/BaseXClient.java

git clone https://github.com/BaseXdb/basex.git $basex_dir
git --git-dir=$basex_dir/.git config core.sparsecheckout true
echo $lib_file > $basex_dir/.git/info/sparse-checkout
git --git-dir=$basex_dir/.git -C $basex_dir read-tree -m -u HEAD

ln -sf $basex_dir/$lib_file src/main/java/org/basex/examples/api/BaseXClient.java

BaseXClient.java を継承して利用したい場合

sed -i -e "s@final class BaseXClient@class BaseXClient@" $basex_dir/$lib_file
git --git-dir=$basex_dir/.git -C $basex_dir add .
git --git-dir=$basex_dir/.git commit -m "Make it extendable"

サンプルコードの実行

XMLの出力やnodeの挿入,nodeの値変更のサンプル
コードはGistにあるので内容はそちらで (サンプルコードは BaseXClient.java を継承するようになってます)

rm src/main/scala/com/example/Hello.scala
git clone https://gist.github.com/9dcbac93aac6b557e762a6665eec8c03.git src/main/scala/com/example/

activator run
# =>
# <!-- this document is in test.xml -->
# <?xml version="1.0" encoding="UTF-8"?>
# <root>
#   <person id="1">
#     <name>A</name>
#     <height>175</height>
#     <weight>85</weight>
#   </person>
#   <person id="2">
#     <name>B</name>
#     <height>180</height>
#     <weight>91</weight>
#   </person>
# </root>
# 
# <!-- this document is in test.xml -->
# <?xml version="1.0" encoding="UTF-8"?>
# <root>
#   <person id="1">
#     <name>A</name>
#     <height>175</height>
#     <weight>85</weight>
#   </person>
#   <person id="2">
#     <name>Z</name>
#     <height>180</height>
#     <weight>91</weight>
#   </person>
# </root>
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1