SAX:bestimmte XML-Werte einlesen & in Variablen speichern

yafoe

Grünschnabel
Hallo liebe XML-Freunde,
ich habe eine kleine SAX-Apllication zum parsen geschrieben und nun möchte ich die Werte(daten) von bestimmten XML-Elementen zu Variablen eines vom mir definierten Array übergeben. Ziel: diese Daten in Array werden später in einer Datenbank danks jdbc-Applikation gespiechert.
Hier ist ein teil meiner quellcode: (damit habe ich bestimmten Werte mit System.out.println() "innerhalb character()-methode" ausgegeben)

private String language = "";
private String currency = "";
private String catalog_id="";

public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
if( localName.equals("LANGUAGE")||localName.equals("CATALOG_ID")||localName.equals("CURRENCY") ){
language = "LANGUAGE";
catalog_id="CATALOG_ID";
currency = "CURRENCY";
}else{
language="";
currency="";
catalog_id="";
}

} //startElement()

public void endElement(String namespaceURI, String localName, String qName) throws SAXException { } //endElement()

public void characters(char ch[], int start, int length) {
if( language.equals("LANGUAGE")||catalog_id.equals("CATALOG_ID")||currency.equals("CURRENCY")){
System.out.println(new String(ch , start, length)); //Hier die Ausgabe-methode }else{ }

} // characters(char[],int,int);


Hier die XML-Datei :

- <HEADER>
<GENERATOR_INFO>e-proCat 2.1, e-pro solutions GmbH, Stuttgart, email: e-procat@e-pro.de</GENERATOR_INFO>
- <CATALOG>
<LANGUAGE>deu</LANGUAGE>
<CATALOG_ID>Katalog 01</CATALOG_ID>
<CATALOG_VERSION>001.000</CATALOG_VERSION>
<CATALOG_NAME>ETIM-BMEcat-Katalog</CATALOG_NAME>
+ <DATETIME type="generation_date">
<DATE>2002-05-22</DATE>
</DATETIME>
<TERRITORY>DE</TERRITORY>
<CURRENCY>EUR</CURRENCY>
<MIME_ROOT>ETIM-Daten\\Multimedia</MIME_ROOT>
</CATALOG>
</HEADER>


PS. ich möchte die werte von den elementen <language>,<catalog_id> und <currency> in ein arry zwischen speichern und diese später mit einer anderen applikation(jdbc) in eine Datenbank speichern.
Danke sehr für ihre Hilfe.
Jonathan
 
Die Methode character() sammelt die Nutzdaten in einem StringBuffer

StringBuffer xmldata = new StringBuffer;

public void characters(char[] ch, int start, int length)
throws SAXException
{
xmldata = xmldata.append(ch, start, length);
}


... und beim Event endElement() stehen die Nutzdaten vollständig zur Verfügung und können verarbeitet werden.
Danach wird der StringBuffer wieder initialisiert.

public void endElement(String tagUri, String localName, String name)
throws SAXException
{
String data = xmldata.toString().trim();

if ("LANGUAGE".equals(localName)) {
// tu dies
}

else if ("CURRENCY".equals(localName)) {
// tu jenes
}

else if ("CATALOG_ID".equals(localName)) {
// tu das
}

else {
// mecker rum
handleUnknownTagname(localName);
}

// Datenbereich initialisieren
xmldata = new StringBuffer("");
}

Gruß - pho
 

Neue Beiträge

Zurück