關於部落格
換個方向思考反而能更真切的看出事物的真實與本質
  • 65509

    累積人氣

  • 2

    今日人氣

    0

    訂閱人氣

[Java][MARC] Marc4J 讀取圖書館ISO檔的好夥伴


import java.io.*;
import org.marc4j.*;
import org.marc4j.marc.*;
import org.marc4j.converter.impl.*;

public class ReadMarc {

    public static void main(String args[]) throws Exception {
        File mrcfile = new File("file.iso");
        FileInputStream fis = new FileInputStream(mrcfile);
        MarcReader reader = new MarcStreamReader(fis);
        while (reader != null && reader.hasNext()) {
            String title = "";
            Record record = reader.next();
            if (record.getVariableField("245") == null) {
                //CMarc 在這裡
                DataField field = (DataField) record.getVariableField("200");
                title = field.getSubfield('a').getData();
            } else {
                //USMarc 在這裡
                DataField field = (DataField) record.getVariableField("245");
                title = field.getSubfield('a').getData();
            }
            System.out.println("書名: " + title);
        }
    }
}

大概是這樣,一般情況下會用到的是這樣:
MarcReader reader = new MarcStreamReader(fis);
如果是不同編碼的話,例如 UTF8 的話:
MarcReader reader = new MarcStreamReader(fis,"UTF8");
如果檔案是 Marc XML 的話:
MarcReader reader = new MarcXmlReader(fis);
相簿設定
標籤設定
相簿狀態