XQuery使用入门(一)

  XQuery使用入门(一)

作者:gobitan(雨水)  日期:2007-03-29  转载请注明出处 http://blog.csdn.net/gobitan
 
XQuery是一种查询语言,它对于XML就像SQL对于关系数据库表一样。要学习SQL 最好的办法就是弄个数据库来编写SQL语句练手,XQuery的学习也不例外,下面我们就来搭建一个可以练手XQuery的环境。
Berkeley DB XML(以下简称BDB XML)是一个开源的嵌入式数据库,最先由SleepyCat公司主要负责开发,后来Oracle公司把它收购了。关于BDB XML的特点请参见文章《 四个主流的Native-XML数据库》。这里主要介绍采用BDB XML如何搭建一个可以练手XQuery的环境。
第一步:下载
可以到Oracle公司的网站上去下载,当前最新版本为2.3.10。下载地址为:
http://www.oracle.com/technology/software/products/berkeley-db/xml/index.html(不保证一直有效),选择Berkeley DB XML 2.3.10 .msi Windows installer,文件大小为52.7M。
 
第二步:安装
双击下载后的安装文件,一路默认安装直至安装完成。如果安装成功,系统会注册环境变量,此时在命令行中输入dbxml就可以进入BDB XML的Shell操作了。
 
第三步:执行你的第一个XQuery查询语句
要想试手XQuery,首先得熟悉Berkeley DB XML的基本使用,向数据库中存储一些数据以供查询。Berkeley DB XML使用很简单,下面就简要介绍一下。
BDB XML提供Shell命令行交互。有两种方式可以进入BDB XML Shell,即通过cmd进入然后键入dbxml命令和直接通过开始菜单找到Berkeley DB XML Shell进入。
BDB XML数据库以容器的方式存储XML数据,因此要先建一个容器。
(1)创建容器
createContainer phone.dbxml
如果命令执行成功,系统会返回” Creating node storage container with nodes indexed”
此时创建了一个名叫phone的容器。
createContainer 是创建容器的命令,后面是容器的名称。
 
(2)向容器中存入XML文档
putDocument phone1 '<phonebook>
<name>
<first>Tom</first>
<last>Jones</last>
</name>
<phone type="home">420-203-2032</phone>
</phonebook>' s
上面的命令存入了一个名叫phone1的XML文档。
如果命令执行成功,系统会返回” Document added, name = phone1”    
putDocument 是存入文档的命令,后面紧跟文档名称,最后是用单引号括起来的 XML 文档内容,并以 s 结束。
 
(3)执行XQuery查询
query 'doc("phone.dbxml/phone1")'
如果成功,系统会返回
” 1 objects returned for eager expression 'doc("phone.dbxml/phone1")'”
然后键入print查看查询结果如下:
<phonebook>
<name>
<first>Tom</first>
<last>Jones</last>
</name>
<phone type="home">420-203-2032</phone>
</phonebook>
 
Query是查询命令,doc是XQuery的一个函数,用于表示XML文档。到此为止,成功了执行了第一个XQuery语句。它还很简单,后面我们会介绍更为深入的应用。
关于作者:胡家辉,网名:雨水 目前主要专注于XML文档管理及相关技术
 
 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java中使用xQuery可以通过以下步骤实现: 1. 引入xQuery解析器:Java中可以使用Saxon或XMLStarlet来解析xQuery语句,需要在项目中引入相关的jar包。 2. 创建xQuery查询语句:使用xQuery语言编写需要执行的查询语句。 3. 创建XML文档:将需要查询的XML数据存储在一个XML文件中。 4. 解析XML文档使用Java中的DOM或SAX解析器解析XML文档。 5. 执行xQuery查询:将查询语句传递给xQuery解析器,并执行查询操作。 6. 处理查询结果:解析器返回查询结果,Java程序可以将结果存储在内存中或输出到文件等。 以下是一个使用Saxon解析器执行xQuery查询的Java示例代码: ```java import net.sf.saxon.s9api.*; public class XQueryExample { public static void main(String[] args) throws SaxonApiException { // 创建xQuery查询语句 String xquery = "for $x in doc('example.xml')//book where $x/price>30 return $x/title"; // 创建Processor和XQueryCompiler对象 Processor processor = new Processor(false); XQueryCompiler compiler = processor.newXQueryCompiler(); // 编译查询语句 XQueryExecutable exec = compiler.compile(xquery); // 创建XQueryEvaluator对象 XQueryEvaluator query = exec.load(); // 解析XML文档 DocumentBuilder builder = processor.newDocumentBuilder(); XdmNode doc = builder.build(new File("example.xml")); // 设置查询上下文 query.setContextItem(doc); // 执行查询并处理结果 XdmValue result = query.evaluate(); for (XdmItem item : result) { System.out.println(item.getStringValue()); } } } ``` 以上代码中,使用Saxon解析器执行了一个xQuery查询,查询了一个XML文档中价格大于30的书籍的标题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gobitan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值