MARC4J provides an easy to use API for working with MARC (binary), MARCXML, MARC JSON in Java. MARC stands for MAchine Readable Cataloging and is a widely used exchange format for bibliographic data. MARCXML provides a loss-less conversion between MARC (MARC21 but also other formats like UNIMARC) and XML.
Features
The MARC4J library includes:
...
JSON representation of marc record entity
{
"leader": "00508cjm a22001813 4500",
"fields": [
{
"001": "10062588"
},
{
"005": "20171013073237.0"
},
{
"007": "sd fsngnnmmneu"
},
{
"008": "170825s2017 xx nn n zxx d"
},
{
"024": {
"subfields": [
{
"a": "00190295755553"
},
{
"2": "gtin-14"
}
],
"ind1": "7",
"ind2": " "
}
},
{
"024": {
"subfields": [
{
"a": "190295755553"
}
],
"ind1": "1",
"ind2": " "
}
},
{
"035": {
"subfields": [
{
"a": "(OCoLC)1002130878"
}
],
"ind1": " ",
"ind2": " "
}
},
{
"035": {
"subfields": [
{
"a": "10062588"
}
],
"ind1": " ",
"ind2": " "
}
},
{
"040": {
"subfields": [
{
"a": "BTCTA"
},
{
"b": "eng"
},
{
"c": "BTCTA"
}
],
"ind1": " ",
"ind2": " "
}
},
{
"100": {
"subfields": [
{
"a": "Rossi, Daniele"
}
],
"ind1": "1",
"ind2": " "
}
},
{
"245": {
"subfields": [
{
"a": "Saint-Saens: Organ Symphony and Carnival of The Animals"
}
],
"ind1": "0",
"ind2": "0"
}
},
{
"260": {
"subfields": [
{
"b": "Wea Corp"
},
{
"c": "2017."
}
],
"ind1": " ",
"ind2": " "
}
},
{
"948": {
"subfields": [
{
"a": "20171013"
},
{
"b": "m"
},
{
"d": "batch"
},
{
"e": "lts"
},
{
"x": "deloclcprefix"
}
],
"ind1": "2",
"ind2": " "
}
}
]
}
Code snippet
to parse MARC file and print all information to console
public class App {
public static void main(String args[]) throws Exception {
// path to .mrc file
String path = "";
// Input Stream from file
InputStream in = new FileInputStream(path);
MarcReader reader = new MarcStreamReader(in);
while (reader.hasNext()) {
Record record = reader.next();
Leader leader = record.getLeader();
List<ControlField> controlFields = record.getControlFields();
List<DataField> dataFields = record.getDataFields();
System.out.println();
System.out.println("LEADER: " + leader);
System.out.println("Control fields: ");
controlFields.forEach(System.out::println);
System.out.println("Data fields: ");
dataFields.forEach(System.out::println);
System.out.println();
}
}
}
...
Transform MARCJson to MARCXML.
Code snippet
Code Block
language java title convert MARCJson to MARCXML and print to console: InputStream fileInputStream = new FileInputStream(INPUT_JSON_FILE); MarcReader marcJsonReader = new MarcJsonReader(fileInputStream); StringWriter writer = new StringWriter(); MarcXmlWriter marcXmlWriter = new MarcXmlWriter(System.out, true); while (marcJsonReader.hasNext()) { Record record = marcJsonReader.next(); marcXmlWriter.write(record); } marcXmlWriter.close(); fileInputStream.close();
Code Block
language js title MARCJSON source collapse true { "leader": "01741nam a2200373 cb4500", "fields": [ { "001": "101073931X" }, { "003": "DE-601" }, { "005": "20180416162657.0" }, { "008": "180111s2018\\\\\\\\sz\\\\\\\\\\\\\\\\\\\\\\\\000\\0\\eng\\d" }, { "020": { "ind1": "\\", "ind2": "\\", "subfields": [ { "a": "3319643991" }, { "9": "3-319-64399-1" } ] } }, { "020": { "ind1": "\\", "ind2": "\\", "subfields": [ { "a": "9783319643991" }, { "9": "978-3-319-64399-1" } ] } }, { "020": { "ind1": "\\", "ind2": "\\", "subfields": [ { "a": "9783319644004 (electronic)" }, { "9": "978-3-319-64400-4" } ] } }, { "035": { "ind1": "\\", "ind2": "\\", "subfields": [ { "a": "(OCoLC)ocn992783736" } ] } }, { "035": { "ind1": "\\", "ind2": "\\", "subfields": [ { "a": "(OCoLC)992783736" } ] } }, { "035": { "ind1": "\\", "ind2": "\\", "subfields": [ { "a": "(DE-599)GBV101073931X" } ] } }, { "040": { "ind1": "\\", "ind2": "\\", "subfields": [ { "b": "ger" }, { "c": "GBVCP" }, { "e": "rda" } ] } }, { "041": { "ind1": "0", "ind2": "\\", "subfields": [ { "a": "eng" } ] } }, { "245": { "ind1": "0", "ind2": "0", "subfields": [ { "a": "Futures, biometrics and neuroscience research" }, { "c": "Luiz Moutinho, Mladen Sokele, editors" } ] } }, { "264": { "ind1": "3", "ind2": "1", "subfields": [ { "a": "Cham" }, { "b": "Palgrave Macmillan" }, { "c": "[2018]" } ] } }, { "300": { "ind1": "\\", "ind2": "\\", "subfields": [ { "a": "xxix, 224 Seiten" }, { "b": "Illustrationen" } ] } }, { "336": { "ind1": "\\", "ind2": "\\", "subfields": [ { "a": "Text" }, { "b": "txt" }, { "2": "rdacontent" } ] } }, { "337": { "ind1": "\\", "ind2": "\\", "subfields": [ { "a": "ohne Hilfsmittel zu benutzen" }, { "b": "n" }, { "2": "rdamedia" } ] } }, { "338": { "ind1": "\\", "ind2": "\\", "subfields": [ { "a": "Band" }, { "b": "nc" }, { "2": "rdacarrier" } ] } }, { "490": { "ind1": "0", "ind2": "\\", "subfields": [ { "a": "Innovative research methodologies in management" }, { "v": " \/ Luiz Moutinho, Mladen Sokele ; Volume 2" } ] } }, { "500": { "ind1": "\\", "ind2": "\\", "subfields": [ { "a": "Enthält 9 Beiträge" } ] } }, { "650": { "ind1": "\\", "ind2": "7", "subfields": [ { "8": "1.1\\x" }, { "a": "Betriebswirtschaftslehre" }, { "0": "(DE-601)091351391" }, { "0": "(DE-STW)12041-5" }, { "2": "stw" } ] } }, { "650": { "ind1": "\\", "ind2": "7", "subfields": [ { "8": "1.2\\x" }, { "a": "Management" }, { "0": "(DE-601)091376173" }, { "0": "(DE-STW)12085-6" }, { "2": "stw" } ] } }, { "650": { "ind1": "\\", "ind2": "7", "subfields": [ { "8": "1.3\\x" }, { "a": "Wissenschaftliche Methode" }, { "0": "(DE-601)091401445" }, { "0": "(DE-STW)16727-0" }, { "2": "stw" } ] } }, { "700": { "ind1": "1", "ind2": "\\", "subfields": [ { "a": "Moutinho, Luiz" }, { "e": "HerausgeberIn" }, { "4": "edt" }, { "0": "(DE-601)509450954" }, { "0": "(DE-588)131450204" } ] } }, { "700": { "ind1": "1", "ind2": "\\", "subfields": [ { "a": "Sokele, Mladen" }, { "e": "HerausgeberIn" }, { "4": "edt" } ] } }, { "830": { "ind1": "\\", "ind2": "0", "subfields": [ { "a": "Innovative research methodologies in management" }, { "b": " \/ Luiz Moutinho, Mladen Sokele" }, { "v": "Volume 2" }, { "9": "2.2018" }, { "w": "(DE-601)1011380293" } ] } }, { "856": { "ind1": "4", "ind2": "2", "subfields": [ { "y": "Inhaltsverzeichnis" }, { "u": "http:\/\/www.gbv.de\/dms\/zbw\/101073931X.pdf" }, { "m": "V:DE-601;B:DE-206" }, { "q": "application\/pdf" }, { "3": "Inhaltsverzeichnis" } ] } }, { "900": { "ind1": "\\", "ind2": "\\", "subfields": [ { "a": "GBV" }, { "b": "ZBW Kiel <206>" }, { "d": "!H:! A18-1775" }, { "x": "L" }, { "z": "LC" }, { "s": "206\/1" } ] } }, { "954": { "ind1": "\\", "ind2": "\\", "subfields": [ { "0": "ZBW Kiel <206>" }, { "a": "26" }, { "b": "1740761685" }, { "c": "01" }, { "f": "H:" }, { "d": "A18-1775" }, { "e": "u" }, { "x": "206\/1" } ] } } ] }
Code Block
theme Confluence title MARCXML result collapse true <?xml version="1.0" encoding="UTF-8" standalone="no"?> <marc:collection xmlns:marc="http://www.loc.gov/MARC21/slim"> <marc:record> <marc:leader>01741nam a2200373 cb4500</marc:leader> <marc:controlfield tag="001">101073931X</marc:controlfield> <marc:controlfield tag="003">DE-601</marc:controlfield> <marc:controlfield tag="005">20180416162657.0</marc:controlfield> <marc:controlfield tag="008">180111s2018\\\\sz\\\\\\\\\\\\000\0\eng\d</marc:controlfield> <marc:datafield ind1="\" ind2="\" tag="020"> <marc:subfield code="a">3319643991</marc:subfield> <marc:subfield code="9">3-319-64399-1</marc:subfield> </marc:datafield> <marc:datafield ind1="\" ind2="\" tag="020"> <marc:subfield code="a">9783319643991</marc:subfield> <marc:subfield code="9">978-3-319-64399-1</marc:subfield> </marc:datafield> <marc:datafield ind1="\" ind2="\" tag="020"> <marc:subfield code="a">9783319644004 (electronic)</marc:subfield> <marc:subfield code="9">978-3-319-64400-4</marc:subfield> </marc:datafield> <marc:datafield ind1="\" ind2="\" tag="035"> <marc:subfield code="a">(OCoLC)ocn992783736</marc:subfield> </marc:datafield> <marc:datafield ind1="\" ind2="\" tag="035"> <marc:subfield code="a">(OCoLC)992783736</marc:subfield> </marc:datafield> <marc:datafield ind1="\" ind2="\" tag="035"> <marc:subfield code="a">(DE-599)GBV101073931X</marc:subfield> </marc:datafield> <marc:datafield ind1="\" ind2="\" tag="040"> <marc:subfield code="b">ger</marc:subfield> <marc:subfield code="c">GBVCP</marc:subfield> <marc:subfield code="e">rda</marc:subfield> </marc:datafield> <marc:datafield ind1="0" ind2="\" tag="041"> <marc:subfield code="a">eng</marc:subfield> </marc:datafield> <marc:datafield ind1="0" ind2="0" tag="245"> <marc:subfield code="a">Futures, biometrics and neuroscience research</marc:subfield> <marc:subfield code="c">Luiz Moutinho, Mladen Sokele, editors</marc:subfield> </marc:datafield> <marc:datafield ind1="3" ind2="1" tag="264"> <marc:subfield code="a">Cham</marc:subfield> <marc:subfield code="b">Palgrave Macmillan</marc:subfield> <marc:subfield code="c">[2018]</marc:subfield> </marc:datafield> <marc:datafield ind1="\" ind2="\" tag="300"> <marc:subfield code="a">xxix, 224 Seiten</marc:subfield> <marc:subfield code="b">Illustrationen</marc:subfield> </marc:datafield> <marc:datafield ind1="\" ind2="\" tag="336"> <marc:subfield code="a">Text</marc:subfield> <marc:subfield code="b">txt</marc:subfield> <marc:subfield code="2">rdacontent</marc:subfield> </marc:datafield> <marc:datafield ind1="\" ind2="\" tag="337"> <marc:subfield code="a">ohne Hilfsmittel zu benutzen</marc:subfield> <marc:subfield code="b">n</marc:subfield> <marc:subfield code="2">rdamedia</marc:subfield> </marc:datafield> <marc:datafield ind1="\" ind2="\" tag="338"> <marc:subfield code="a">Band</marc:subfield> <marc:subfield code="b">nc</marc:subfield> <marc:subfield code="2">rdacarrier</marc:subfield> </marc:datafield> <marc:datafield ind1="0" ind2="\" tag="490"> <marc:subfield code="a">Innovative research methodologies in management</marc:subfield> <marc:subfield code="v"> / Luiz Moutinho, Mladen Sokele ; Volume 2</marc:subfield> </marc:datafield> <marc:datafield ind1="\" ind2="\" tag="500"> <marc:subfield code="a">Enthält 9 Beiträge</marc:subfield> </marc:datafield> <marc:datafield ind1="\" ind2="7" tag="650"> <marc:subfield code="8">1.1\x</marc:subfield> <marc:subfield code="a">Betriebswirtschaftslehre</marc:subfield> <marc:subfield code="0">(DE-601)091351391</marc:subfield> <marc:subfield code="0">(DE-STW)12041-5</marc:subfield> <marc:subfield code="2">stw</marc:subfield> </marc:datafield> <marc:datafield ind1="\" ind2="7" tag="650"> <marc:subfield code="8">1.2\x</marc:subfield> <marc:subfield code="a">Management</marc:subfield> <marc:subfield code="0">(DE-601)091376173</marc:subfield> <marc:subfield code="0">(DE-STW)12085-6</marc:subfield> <marc:subfield code="2">stw</marc:subfield> </marc:datafield> <marc:datafield ind1="\" ind2="7" tag="650"> <marc:subfield code="8">1.3\x</marc:subfield> <marc:subfield code="a">Wissenschaftliche Methode</marc:subfield> <marc:subfield code="0">(DE-601)091401445</marc:subfield> <marc:subfield code="0">(DE-STW)16727-0</marc:subfield> <marc:subfield code="2">stw</marc:subfield> </marc:datafield> <marc:datafield ind1="1" ind2="\" tag="700"> <marc:subfield code="a">Moutinho, Luiz</marc:subfield> <marc:subfield code="e">HerausgeberIn</marc:subfield> <marc:subfield code="4">edt</marc:subfield> <marc:subfield code="0">(DE-601)509450954</marc:subfield> <marc:subfield code="0">(DE-588)131450204</marc:subfield> </marc:datafield> <marc:datafield ind1="1" ind2="\" tag="700"> <marc:subfield code="a">Sokele, Mladen</marc:subfield> <marc:subfield code="e">HerausgeberIn</marc:subfield> <marc:subfield code="4">edt</marc:subfield> </marc:datafield> <marc:datafield ind1="\" ind2="0" tag="830"> <marc:subfield code="a">Innovative research methodologies in management</marc:subfield> <marc:subfield code="b"> / Luiz Moutinho, Mladen Sokele</marc:subfield> <marc:subfield code="v">Volume 2</marc:subfield> <marc:subfield code="9">2.2018</marc:subfield> <marc:subfield code="w">(DE-601)1011380293</marc:subfield> </marc:datafield> <marc:datafield ind1="4" ind2="2" tag="856"> <marc:subfield code="y">Inhaltsverzeichnis</marc:subfield> <marc:subfield code="u">http://www.gbv.de/dms/zbw/101073931X.pdf</marc:subfield> <marc:subfield code="m">V:DE-601;B:DE-206</marc:subfield> <marc:subfield code="q">application/pdf</marc:subfield> <marc:subfield code="3">Inhaltsverzeichnis</marc:subfield> </marc:datafield> <marc:datafield ind1="\" ind2="\" tag="900"> <marc:subfield code="a">GBV</marc:subfield> <marc:subfield code="b">ZBW Kiel <206></marc:subfield> <marc:subfield code="d">!H:! A18-1775</marc:subfield> <marc:subfield code="x">L</marc:subfield> <marc:subfield code="z">LC</marc:subfield> <marc:subfield code="s">206/1</marc:subfield> </marc:datafield> <marc:datafield ind1="\" ind2="\" tag="954"> <marc:subfield code="0">ZBW Kiel <206></marc:subfield> <marc:subfield code="a">26</marc:subfield> <marc:subfield code="b">1740761685</marc:subfield> <marc:subfield code="c">01</marc:subfield> <marc:subfield code="f">H:</marc:subfield> <marc:subfield code="d">A18-1775</marc:subfield> <marc:subfield code="e">u</marc:subfield> <marc:subfield code="x">206/1</marc:subfield> </marc:datafield> </marc:record> </marc:collection>
...