tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
1762
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    yafoe yafoe ist offline Grünschnabel
    Registriert seit
    Jun 2005
    Beiträge
    4
    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
     

  2. #2
    pho pho ist offline Grünschnabel
    Registriert seit
    Aug 2005
    Beiträge
    3
    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
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 20.11.10, 21:09
  2. Bestimmte Werte aus txt auslesen
    Von Teilzeitphilosoph im Forum C/C++
    Antworten: 18
    Letzter Beitrag: 18.02.10, 15:11
  3. Nur bestimmte Dateien einlesen
    Von Elveon im Forum .NET Windows Forms
    Antworten: 2
    Letzter Beitrag: 23.10.08, 18:14
  4. Variablen?! Bestimmte Werte auslesen (Foto).
    Von Photocharts im Forum PHP
    Antworten: 7
    Letzter Beitrag: 03.12.06, 22:01
  5. Aus DB Bestimmte werte auslesen
    Von creativeheadz im Forum PHP
    Antworten: 11
    Letzter Beitrag: 02.02.06, 18:43