通过z39.50协议用YAZ软件获取Marc数据(JAVA版)
目前网上没有找到相关正式可用的例子,于是自己花了一星期去看文档和前人写的例子(都是10多年前的帖子和资源),分享给大家,希望后来的和我一样的菜鸟能用到
- 配置环境:安装yaz软件。官网:https://www.indexdata.com/resources/software/yaz/下载对应的版本后无脑安装就可以了。
- 创建java项目,导入jar包,安装好的YAZ目录下有一个java文件项,里面有jar包。
- 编写类就可以了。
1.创建连接对象:需要地址和端口
2.设置连接的一些参数:密码,用户名,数据库名,查询方式
3.定义查询语句
4.连接(查询语句)
5.接收结果
6.取出内容
7.关闭连接
public List<String> CNmarc(String host,int port,String username, String password,String datebase){
Connection c=null; //声明连接 Query q=null; //声明查询 int n=0; // 声明尝试次数 List<String> list =new ArrayList<String>(); // 返回的集合
讯享网
讯享网 try {
c=new Connection(host, port); //possibly set some options 可能设置一些选项 c.option("elementSetName","F"); //设置简单或者复杂数据查询: B or F -- 简单 or 复杂 c.setDatabaseName(datebase); c.setUsername(username); c.setPassword(password); c.setSyntax("Unimarc");//数据格式 c.connect(); //establishes connection 建立连接 //查询语句 StringBuilder queryBuilder = new StringBuilder(); queryBuilder.append("@attr 1=7 ");//isbn 号 带不带 - 都可以(自己测试的结果) //978-7-5463-4045-6 西游记的 //54 行为设计学的 queryBuilder.append("\"" +"54"+ "\""); Query query =new PrefixQuery(queryBuilder.toString());//创建查询类型和语句填充 ResultSet set=c.search(query);//查询,并接收查询结果集 /*测试时: 单取第一条 byte[] b=set.getRecord(0).getContent();//取第一条结果集 String st1 =new String(b,"gbk");//以gbk编码格式展示 // String st2=set.getRecord(0).render();//取出结果集第一条并断句展示(但是格式默认是gbk(或者获取的默认编码),无法再转码,如果你的程序是utf-8或者其他编码格式,会出现乱码) System.out.println("共:"+set.getHitCount()+"条"); System.out.println("结果:"+st1); */ for(int i =0; i<set.getHitCount();i++){
byte[] b=set.getRecord(i).getContent(); String st1; try {
st1 = new String(b,"gbk"); list.add(st1); } catch (UnsupportedEncodingException e) {
//编码转化失败 } } }catch (ZoomException e) {
//handle any protocol- or network-level errors //连接时有时会超时异常,解决办法:再次调用,并计数,超次数返回 空集合 if(n<5) {
n=n+1;//计数一次 CNmarc(host,port,username,password,datebase); }else {
return list; } } finally {
c.close(); //close the socket 关闭连接 } return list;
不会可以下载我的例子看(例子也差不多,类就是这个类)
分享一下文档:
资料参考:
http://zoom.z3950.org/api/zoom-1.4.html zoom文档
https://www.indexdata.com/resources/software/yaz/ YAZ官网
https://software.indexdata.com/yaz4j/site/apidocs/index.html jar文档
https://software.indexdata.com/yaz/doc/ YAZ文档
(外国兄弟文档写的真的烂…我tm读了一星期都没看懂什么玩意)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/48152.html