BaseX 是专为 XML 设计的原生数据库,完整解析结构并构建树形模型,支持毫秒级 XPath/XQuery 查询;非通用或关系型数据库,XML 为其第一公民;需 JDK 11+,可通过 GUI 或命令行创建数据库、执行查询、切换库及远程连接。

BaseX 是一个开源、轻量、高性能的原生 XML 数据库,专为存储、索引和查询 XML 数据而设计。它不是把 XML 当作普通文件或文本处理,而是将 XML 的结构(元素、属性、命名空间、文本节点等)完整解析并构建内部树形模型,配合多级索引(路径索引、属性索引、全文索引等),让 XPath 和 XQuery 查询能直接命中数据,响应速度可达毫秒级。
BaseX 的核心定位
它不是一个通用数据库(如 MySQL),也不是仅支持 XML 类型字段的关系型数据库(如 PostgreSQL 的 xml 类型)。它是真正的“原生 XML 数据库”——XML 就是它的第一公民。所有功能围绕 XML 的层级性、嵌套性、命名空间和语义展开,天然支持标准 XPath 1.0/2.0 和 XQuery 1.0/3.1,无需转换或映射。
快速启动与创建第一个数据库
确保已安装 JDK 11+,然后按以下步骤操作:
- 下载 BaseX 安装包(basex.org/products/download)或用命令行克隆源码:
git clone https://github.com/BaseXdb/basex.git - 启动控制台:
java -jar basex.jar;或启动图形界面:java -jar basexgui.jar - 在 GUI 中点击 Database > Create,输入数据库名(如
books),选择本地 XML 文件(如books.xml)即可导入 - 命令行中也可执行:
CREATE DB books books.xml,系统自动建立索引
基础查询语法与常见写法
BaseX 默认对当前激活的数据库执行查询。XQuery 表达式直接输入即可,例如:
- 查所有 book 元素:
//book - 查所有书名:
//book/title/text()或更简洁地for $b in //book return $b/title - 带命名空间的文档需先声明前缀,如:
declare namespace bk = "http://example.com/book"; //bk:book - 查含特定属性的节点:
//book[@category = 'fiction'](BaseX 已为属性自动建索引,速度很快) - 跨文档查询(需先用
doc()加载):doc('books.xml')//book/title
切换与管理多个数据库
BaseX 支持同时打开多个数据库,但每次查询只作用于当前“活动数据库”。切换方式如下:
- 命令行中用
OPEN mydb切换到名为mydb的数据库 - GUI 中左侧数据库列表双击目标库,或右键选择 Open
- 查询时显式指定文档:
doc('mydb')//item,适用于临时跨库引用 - 查看当前数据库状态:
INFO命令显示名称、大小、索引信息等
从代码连接 BaseX 服务
若需在 Java 等程序中调用,需启动 BaseXServer(默认端口 1984),再用客户端连接:
- 启动服务:
basexserver或java -cp basex.jar org.basex.BaseXServer - Java 客户端示例:
BaseXClient session = new BaseXClient("localhost", 1984, "admin", "admin");
String result = session.execute("xquery //book/title");
System.out.println(result);










