public class DNBmarc21 extends DefaultHandler {
private String bufferNummer;
private String bufferCode;
private boolean eintrag = false;
private int ZahlEintrag;
// Erstellt ein Parser-Objekt für die Buchabfragen
Buch buchParser = new Buch();
public DNBmarc21(Buch buch) {
this.buchParser = buch;
}
public static String getValueFromAttribute(Attributes attr, String attributeName) {
for (int i = 0; i < attr.getLength(); i++) {
if (attr.getLocalName(i).equals(attributeName)) {
return attr.getValue(i);
}
}
return null;
}
public void startDocument() throws SAXException {
LOG.info("\n\nBeginn der XML-Auswertung\n");
}
public void startElement(String namespaceURI, String localName, String qName, Attributes attr)
throws SAXException {
if (localName.equals("numberOfRecords")) {
eintrag = true;
} else if (localName.equals("datafield")) {
this.bufferNummer = DNBmarc21.getValueFromAttribute(attr, "tag");
} else if (localName.equals("subfield")) {
this.bufferCode = DNBmarc21.getValueFromAttribute(attr, "code");
}
}
public void characters(char[] ch, int start, int length)
throws SAXException {
String zeichenkette = new String(ch, start, length);
if (eintrag == true){
this.ZahlEintrag = Integer.parseInt(zeichenkette);
eintrag = false;
LOG.info("Anzahl der Einträge : " + this.ZahlEintrag);
} else if ("020".equals(this.bufferNummer)) {
if ("a".equals(this.bufferCode)) {
buchParser.setEan(zeichenkette);
LOG.info("EAN : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
} else if ("c".equals(this.bufferCode)) {
buchParser.setBezugsbedingung(zeichenkette);
LOG.info("Bezugsbedingung : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
} else if ("9".equals(this.bufferCode)) {
buchParser.setIsbn(zeichenkette);
LOG.info("ISBN : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
}
} else if ("041".equals(this.bufferNummer)) {
if ("a".equals(this.bufferCode)) {
buchParser.setSpracheISO(zeichenkette);
LOG.info("Sprache ISO : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
}
} else if ("100".equals(this.bufferNummer)) {
if ("a".equals(this.bufferCode)) {
buchParser.setVerfasser1(zeichenkette);
LOG.info("Verfasser 1 (FamN, VoN): " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
} else if ("c".equals(this.bufferCode)) {
buchParser.setUntertitel(zeichenkette);
LOG.info("Untertitel : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
}
} else if ("245".equals(this.bufferNummer)) {
if ("a".equals(this.bufferCode)) {
buchParser.setTitel(zeichenkette);
LOG.info("Titel : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
} else if ("b".equals(this.bufferCode)) {
buchParser.setUntertitel(zeichenkette);
LOG.info("Untertitel : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
} else if ("c".equals(this.bufferCode)) {
buchParser.setVerfasser2(zeichenkette);
LOG.info("Verfasser 2 : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
splitteAutoren(zeichenkette);
}
} else if ("250".equals(this.bufferNummer)) {
if ("a".equals(this.bufferCode)) {
zeichenkette = Buch.transformiereAuflage(zeichenkette);
buchParser.setAuflage(zeichenkette);
LOG.info("Auflage : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
}
} else if ("264".equals(this.bufferNummer)) {
if ("a".equals(this.bufferCode)) {
buchParser.setErscheinungsOrt(zeichenkette);
LOG.info("Erscheinungsort : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
} else if ("b".equals(this.bufferCode)) {
buchParser.setVerlagName(zeichenkette);
LOG.info("Verlagsname : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
} else if ("c".equals(this.bufferCode)) {
buchParser.setErscheinungsJahr(Integer.parseInt(zeichenkette));
LOG.info("Erscheinungsjahr : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
}
} else if ("300".equals(this.bufferNummer)) {
if ("a".equals(this.bufferCode)) {
buchParser.setUmfang(zeichenkette);
LOG.info("Umfang :" + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
} else if ("b".equals(this.bufferCode)) {
buchParser.setIllustration(zeichenkette);
LOG.info("Illustration : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
} else if ("c".equals(this.bufferCode)) {
buchParser.setMasse(zeichenkette);
LOG.info("Masse : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
}
} else if ("490".equals(this.bufferNummer)) {
if ("a".equals(this.bufferCode)) {
buchParser.addIsbd(zeichenkette);
LOG.info("ISBD : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
}
} else if ("650".equals(this.bufferNummer)) {
if ("a".equals(this.bufferCode)) {
buchParser.addSachschlagwort(zeichenkette);
LOG.info("Sachschlagwort : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
}
} else if ("653".equals(this.bufferNummer)) {
if ("a".equals(this.bufferCode)) {
}
} else if ("689".equals(this.bufferNummer)) {
if ("a".equals(this.bufferCode)) {
buchParser.addSchlagwort2(zeichenkette);
LOG.info("Schlagwort 2 : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
}
} else if ("856".equals(this.bufferNummer)) {
if ("u".equals(this.bufferCode)) {
buchParser.setLink(zeichenkette);
LOG.info("Link : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
} else if ("3".equals(this.bufferCode)) {
buchParser.setLinkText(zeichenkette);
LOG.info("Link Text : " + zeichenkette);
LOG.info("Tag Code : " + bufferNummer + " " + bufferCode);
} // if-else
} // if-else
}
public void endElement(String namespaceURI, String localName, String qName)
throws SAXException {
if (localName.equals("datafield")) {
this.bufferNummer = null;
} else if (localName.equals("subfield")) {
this.bufferCode = null;
}
}
public void endDocument()
throws SAXException {
LOG.info("\n");
LOG.info("EAN : " + buchParser.getEAN());
LOG.info("Bezugsart : " + buchParser.getBezugsbedingung());
LOG.info("ISBN : " + buchParser.getIsbn());
LOG.info("Sprachecode : " + buchParser.getSpracheISO());
LOG.info("Verfasser 1 : " + buchParser.getVerfasser1());
LOG.info("Verfasser 2 : " + buchParser.getVerfasser2());
LOG.info("Buchtitel : " + buchParser.getTitel());
LOG.info("Titelzusatz : " + buchParser.getUntertitel());
LOG.info("Auflage : " + buchParser.getAuflage());
LOG.info("Erscheinungsort : " + buchParser.getErscheinungsOrt());
LOG.info("Verlagname : " + buchParser.getVerlagName());
LOG.info("Erscheinungsjahr : " + buchParser.getErscheinungsJahr());
LOG.info("Umfang : " + buchParser.getUmfang());
LOG.info("Illustration : " + buchParser.getIllustration());
LOG.info("Maße : " + buchParser.getMasse());
for (int i = 0; i < buchParser.getIsbdZahl(); i++) {
LOG.info("Die ISBD ist : " + buchParser.getIsbd(i));
}
for (int i = 0; i < buchParser.getSachschlagwortZahl(); i++) {
LOG.info("Sachschlagwort : " + buchParser.getSachschlagwort(i));
}
for (int i = 0; i < buchParser.getSchlagwort1Zahl(); i++) {
LOG.info("Schlagwort 1 : " + buchParser.getSchlagwort1(i));
}
for (int i = 0; i < buchParser.getSchlagwort2Zahl(); i++) {
LOG.info("Schlagwort 2 : " + buchParser.getSchlagwort2(i));
}
for (Person person : buchParser.getAutorenListe()) {
LOG.info("Autor Vorname : " + person.getVorname());
LOG.info("Autor Nachname : " + person.getNachname());
}
LOG.info("Link : " + buchParser.getLink());
LOG.info("Link Text : " + buchParser.getLinkText());
LOG.info("\n\nEnde der XML-Auswertung\n");
LOG.info("Das Dokumentende wurde erreicht");
}
}