以文本方式查看主题

-  W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWL  (http://bbs.xml.org.cn/index.asp)
--  『 XQuery/XLink/XPointer/ 』  (http://bbs.xml.org.cn/list.asp?boardid=14)
----  [原创]XQEngine的API使用方法简介  (http://bbs.xml.org.cn/dispbbs.asp?boardid=14&rootid=&id=13938)


--  作者:sharpbeans
--  发布时间:1/22/2005 9:10:00 PM

--  [原创]XQEngine的API使用方法简介
刚学xml,用到XQEngine时,虽然会XQuery语法但不会用这个引擎,文档也不是很清楚。到网上查资料,只能找到老版本的例子,接口已经改动很多。没办法,只能自己想了,已搞定初步,现与大家分享。
xml文件:
books.xml

<?xml version="1.0" encoding="gb2312"?>
<books>
    <book id="1">
        <name>goodbook</name>
        <price>200.20</price>
    </book>
    <book id="2">
        <name>badbook</name>
        <price>100.10</price>
    </book>
</books>

另有查询文件query.txt

let $book:=//book
where $book/@id<=1
return
 <books>
 {
  $book
 }
 </books>

java文件testxqengine.java

import com.fatdog.xmlEngine.XQEngine;
import com.fatdog.xmlEngine.ResultList;
import org.xml.sax.helpers.XMLReaderFactory;

import java.io.PrintWriter;

public class testxqengine {
    public static void main(String[] args)
    {
        XQEngine myengine= new XQEngine();
        try
        {
            myengine.setXMLReader(XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser"));  //用的xerces解析器
            myengine.setDocument("d:/java-procs/xmltest/data/books.xml");
            ResultList rl=myengine.setQueryFromFile("d:/java-procs/xmltest/data/query.txt");  //这里暂用绝对路径做试验
            System.out.println(rl.emitXml(true)); //这个true是让输出的xml符合一般格式的
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

程序输出结果:

<books><book id="1">
        <name>goodbook</name>
        <price>200.20</price>
    </book>
<book id="2">
        <name>badbook</name>
        <price>100.10</price>
    </book>
</books>

这里只是给出了一个最简单的例子,复杂点的应用请查询api文档和xquery语法


--  作者:nude
--  发布时间:3/31/2005 11:02:00 PM

--  query.txt中的"where $book/@id<=1"什么意思?
初学flwr,不懂query.txt中的"where $book/@id<=1"是什么意思?高人请指教!
--  作者:lvblue
--  发布时间:4/13/2005 9:11:00 AM

--  
是不是邦定的BOOK元素的ID属性<=1 阿????
--  作者:jupiterfulgur
--  发布时间:4/17/2005 3:18:00 PM

--  
楼主的输出结果好像有问题,应该是:
<books>
   <book id="1">
        <name>goodbook</name>
        <price>200.20</price>
    </book>
</books>

顺便问一下,怎么发的帖子和回帖都没有发布时间啊,难道是我没看见


--  作者:tiger_zheng
--  发布时间:4/21/2005 5:22:00 PM

--  
我把搂主的程序运行了一下得到的xml好像不对啊?我改了where $book/@id<=1这句得到的是相同的答案.这是怎么回事啊
--  作者:gorges
--  发布时间:4/28/2005 10:02:00 PM

--  
楼主的XQuery语句有误,应该是:
for $book in //books/book
where $book/@id<=1
return
<books>
   {$book}
</books>
这样才会只取出需要的一条记录
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
113.281ms