1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace ISO2709
 7 {
 8     public class MarcHandler
 9     {
10         private const char 记录分隔符 = (char)29;
11         private const char 字段分隔符 = (char)30;
12         private const char 子字段分隔符 = (char)31;
13 
14         private const int 头标区长度 = 24;
15         private const int 字段长度 = 12;
16 
17 
18 
19         public string Record;
20         public MarcHandler(string Record)
21         {
22             this.Record = Record;
23         }
24 
25 
26         private Record SingleRecordHandler(string Record)
27         {
28             var result = new Record();
29 
30             int 记录总长度;
31             int 数据基地址;//目次区结束位置
32 
33 
34             int 目次区长度;
35             string 目次区内容;//每个12位:字段标识符(3)  字段长度(4)  字段起始地址(5) ;        字段标识符 应查找对应字段名
36 
37             int 字段个数;
38             int 字段标识符;
39 
40             int 数据区长度;
41             string 数据区内容;//个数对应 目次区中的字段个数
42 
43             string[] 数据字段数组;
44             string[] 数据子字段数组;
45 
46             int i;
47             string[] tmp;
48 
49             记录总长度 = Record.Substring(0, 4);
50             数据基地址 = Record.Substring(12, 5);
51 
52             目次区长度 = 数据基地址 - 头标区长度 + 1;
53             目次区内容 = Record.Substring(头标区长度, 目次区长度);
54             字段个数 = 目次区长度 / 字段长度;
55 
56             数据区长度 = 记录总长度 - 数据基地址;
57             数据区内容 = Record.Substring(数据基地址, 数据区长度);
58 
59             //配置文件:数字与字段名映射(01-ISBN,010-出版社等)
60             //1.得到所有字段标识符
61             //2.取得数据区内容与目次区字段标识符的对应字段构建Table(依次对应,注意有子字段,通过"子字段分隔符"分隔)
62             //3.如果"字段标识符"的数字与配置文件中的数字相同,设置实体类Record中相应字段的值 
63 
64             return result;
65         }
66 
67         public IEnumerable<Record> RecordSplit()
68         {
69             var result = new List<Record>() ;
70 
71             var RecordList=Record.Split(记录分隔符);
72             foreach (var r in RecordList)
73             {
74                 result.Add(SingleRecordHandler(Record));
75             }
76         }
77 
78         public void ToExcel()
79         {
80             foreach (var r in RecordSplit())
81             { 
82                 //导出到Excel
83             }
84         }
85  
86     }
87 
88     public class Record
89     {
90         public string ISBN { set; get; }
91         public string 出版社 { set; get; }
92         // 自己添加 
93     }
94 }
95 

Marc数据格式:(记录分隔符分隔)
        1.记录头标区:24 位,0 - 4位字符为该记录的总长度 ,1 2 -1 6位为数据基地址。它的值等于头标区长度与目次区长度之和,即数据基地址-24=目次区长度;相当于表信息
        2.目次区:12位*n个 组成 (字段分隔符分隔) ,字段标识符(3)  字段长度(4)  字段起始地址(5);相当于列名
        3.数据区:目次区字段名所对应的值,(字段分隔符分隔,其中包含的子字段由子字段分隔符分隔);相当于值

转载于:https://www.cnblogs.com/limxc/archive/2008/07/02/1234158.html

MarcHandler (Marc ISO2709)相关推荐

  1. 什么是MARC数据?

    MARC简介 机读目录是机器可读目录的简称,英文为Machine-Readable Catalogue,简写为MARC.是计算机编目的产品.它是以代码形式和特定格式结构记录在计算机存贮载体上,能够被计 ...

  2. 开源代码库_3个开源代码库来处理MARC格式的记录

    开源代码库 欢迎回到Nooks&Crannies! 在为我的婚礼休假一个月之后,我一直在为即将到来的专栏挖掘一些有趣的地方. 这个月,我将看一些开放源代码库,开发人员可以使用它们来处理MARC ...

  3. Linux基金会网络策略副总裁Marc Cohn:OPEN-O遍及网络,尽享服务

    2016年6月1-2日,"2016全球SDNFV技术大会"在北京盛大召开.作为连续举办三届的SDN/NFV技术与产业盛会,本届大会着眼于SDN /NFV的实践应用与部署,从SDN/ ...

  4. 快讯 | 美国投资公司Avenue Capital Group联合创始人Marc Lasry:比特币价格可能达到40,000美元...

    快讯 | 美国投资公司Avenue Capital Group联合创始人Marc Lasry:比特币价格可能达到40,000美元... 区块链大本营7月19日讯 据美国有线电视新闻网(CNN)报道,美 ...

  5. marc数据个人心得

    最近在做一个实习的图书馆系统,因为涉及到书城,自然会涉及到marc数据的编码与解码,研究了下GB/T 20163-2006的中国档案机读目录格式(在中国国家标准网里可以查到)里面涉及到很多的分段符号, ...

  6. Msc.Marc的python开发#2

    这里写目录标题 Msc.Marc的python开发#2 开发目的 流程图 整体结构 单元结构 应用实例 Msc.Marc的python开发#2 今天接着上一篇的文章介绍.上一篇说到,利用Msc.Mar ...

  7. msc.marc的Python开发,MscMarc,python,2

    文章目录 Msc.Marc的python开发#2 开发目的 流程图 整体结构 单元结构 应用实例 Msc.Marc的python开发#2 今天接着上一篇的文章介绍.上一篇说到,利用Msc.Marc的p ...

  8. Marc数据解析和拼接(java版)

    解析marc数据: marc数据分为三部分:标识区.目次区.数据记录区.详情请仔细查找资料,本文不多介绍,直接上代码 import java.util.ArrayList; import java.u ...

  9. Java读取MARC元数据 代码

    需要对MARC元数据的转换有一点了解,这个自行百度了解. 可以参考: https://blog.csdn.net/chaishen10000/article/details/79245055 http ...

最新文章

  1. 自学python推荐书籍 知乎-在知乎上学 Python - 爬虫篇
  2. how to identify keywords for search on Google Scholar?
  3. chapter 15 运算符详解
  4. MATLAB基础学习笔记01:初探MATLAB世界
  5. 无心剑中译叶芝诗17首
  6. Python使用pyinstaller打包几个小技巧
  7. 牛客 —— 湖南大学第十六届程序设计竞赛(重现赛)
  8. laravel blade include使用变量_3分钟短文:可能是Laravel模板最直白的用法了,没有之一...
  9. python爬虫怎么挣钱-个人利用Python爬虫技术怎么挣钱
  10. java获取达梦数据库_记一次对达梦数据库的优化过程
  11. 求1--100的和 Python3实现
  12. sockets: SCTP
  13. m2增长率曲线_中国通胀率(中国m2历年数据曲线图)
  14. vue:如何设计网页的微信扫码登录功能
  15. 阿里云Oss云存储的使用步骤
  16. 638-字符串模式匹配-KMP算法
  17. 微信 考勤 php,JavaScript_微信企业号开发之微信考勤Cookies的使用,在上篇文章给大家介绍了微信 - phpStudy...
  18. 剑指offer做题记录
  19. 三只松鼠商品评论分析
  20. 仿163邮箱上传多附件,有点酷

热门文章

  1. “2018中国企业互联网CEO峰会”听e签宝金宏洲讲新趋势
  2. 3手机版怎么换行_全国青少年普法网手机怎么登录 教育部普法网手机版登录入口:http://qspfw.moe.gov.cn...
  3. Matlab:随机整数
  4. TQ2440 GPB口控制寄存器GPBCON和GPBUP作用
  5. Unity3D 鼠标以及触屏移动、缩放控制器(相机)
  6. 【虹科科普】网络监控协议的类型
  7. 你知道 Java 中关键字 enum 是一个语法糖吗?反编译枚举类
  8. Windchill二次开发-批量导出和载入对象的软类型和软属性
  9. 宝尚在线炒股攀钢钒钛,钒涨价最受益标
  10. 大厂offer背后的简历精修师