Avatar billede svuppenator Nybegynder
10. august 2003 - 17:00 Der er 15 kommentarer og
1 løsning

Size i hashmap nulstiller sig selv ved tilføjelse af nyt element.

Mjallo

Jeg har et problem med min Hashmap. Jeg har et element som bliver tilføjet til min Hashmap og som i kan se af outputtet så starter den forfra når den når det næste element. Exceptionen jeg får er fordi min Hashmap er tom og jeg prøver at hente noget, som ikke er der.
Jeg har vedlagt heleprogramkoden og .xml filen

Output:
TEST
SIZE: 0
SIZE: 1
Attribute: antal
        Value: 1
Attribute: antal
        Value: 1
TEST2
SIZE: 0
SIZE: 1
Attribute: antal
        Value: 1
Attribute: antal
        Value: 1
java.lang.NullPointerException
        at CykelMain.hentTour(CykelProgram.java:62)
        at CykelProgram.main(CykelProgram.java:35)
Exception in thread "main"

Kode:
import java.util.*;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;
import org.xml.sax.helpers.DefaultHandler;

/**
* <p>Title: CykelProgram</p>
* <p>Description: LAvet til at holde styr på de penge indsmal.igs løb som små foreninger holder undt omkring</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: Memborg Developement</p>
* @author not attributable
* @version 0.1 Alpha
*/

public class CykelProgram {
   
    private static String dataXML = "C:\\Documents and Settings\\RMH\\My Documents\\Rune\\Java\\CykelProgram\\data.xml"; //Variable efter hvor filen ligger.
    static CykelMain cm;
   
    public static void main(String[] args) throws Exception {
        cm = new CykelMain();
        String tmp = "";
        SAXParserFactory factory = SAXParserFactory.newInstance();
        factory.setValidating(true);
        factory.setNamespaceAware(true);
        SAXParser parser = factory.newSAXParser();
        parser.parse(dataXML, new SAXParserHandler());
        tmp = cm.hentTour(1);
    }
}

class CykelMain {
   
    private HashMap tourList = new HashMap();
    private Tour tour;
    /** Creates a new instance of CykelMain */
    public CykelMain() {
    }
   
    protected void addTour(int id, String navn, String aar, int distance) {
        tour = new Tour();
        System.out.println(navn);
        tour.setID(id);
        tour.setNavn(navn);
        tour.setAar(aar);
        tour.setDistance(distance);
        System.out.println("SIZE: "+ tourList.size());
        tourList.put(new Integer(id), tour);
        System.out.println("SIZE: "+ tourList.size());
    }
    protected String hentTour(int id) {
        String tmp =  "";
       
        tour = (Tour)tourList.get(new Integer(id));
        tmp = tour.getNavn();
        System.out.println("data fra HashMap: " + tmp);
        return tmp;
    }
}

class Deltager {
    private String navn;
    private String adresse;
    private String postNr;
    private String by;
    private String tlf;
    private String rytterNr; //Nummeret på en deltager.
    private boolean voksen; //fortæller om det er en voksen eller et barn.
    private int id;
    private Vector SponsorList = new Vector(); //En liste over hvilke sponsor denne deltager har.
    private Sponsor spon; //Instance af Sponsor klassen.
   
    public Deltager() {}
   
    protected void addSponsor(int id, String sponsornavn, String sponsoradresse,
    String sponsorby, String sponsorpostnr, String Stlf,
    int kpm, int fastkr) {
        spon = new Sponsor();
       
        spon.setID(id);
        spon.setSponsornavn(sponsornavn);
        spon.setAdresse(sponsoradresse);
        spon.setBy(sponsorby);
        spon.setPostnr(sponsorpostnr);
        spon.setTlf(Stlf);
        spon.setKrPrKm(kpm);
        spon.setFastKr(fastkr);
       
        SponsorList.add(spon);
    }
   
    protected int getID() {
        return id;
    }
   
    protected String getNavn() {
        return navn;
    }
   
    protected String getAdresse() {
        return adresse;
    }
   
    protected String getPostnr() {
        return postNr;
    }
   
    protected String getBy() {
        return by;
    }
   
    protected String getTlf() {
        return tlf;
    }
   
    protected String getRytterNr() {
        return rytterNr;
    }
   
    protected boolean getVoksen() {
        return voksen;
    }
   
    protected void setID(int i) {
        id = i;
    }
   
    protected void setNavn(String n) {
        navn = n;
    }
   
    protected void setAdresse(String a) {
        adresse = a;
    }
   
    protected void setPostnr(String p) {
        postNr = p;
    }
   
    protected void setBy(String b) {
        by = b;
    }
   
    protected void setTlf(String t) {
        tlf = t;
    }
   
    protected void setRytternr(String r) {
        rytterNr = r;
    }
   
    protected void setVoksen(boolean v) {
        voksen = v;
    }
}

class Sponsor {
    //Liste over private variabler
    private String Sponsornavn; //Navnet pÃ¥ sponsor
    private String Adresse; //Adresse pÃ¥ sponsor
    private String Postnr;
    private String By;
    private String tlf; //Tlf til sponsor
    private int krPrKm; //Kroner indkørt pr. kilometer.
    private int fastKr; //Engangs beløb for hele løbet.
    private int id;
   
    public Sponsor() {}
   
    //en samling "get" metoder til at fÃ¥ fat i de private variabler med.
    protected int getID() {
        return id;
    }
   
    protected String getSponsornavn() {
        return Sponsornavn;
    }
   
    protected String getAdresse() {
        return Adresse;
    }
   
    protected String getPostnr() {
        return Postnr;
    }
   
    protected String getBy() {
        return By;
    }
   
    protected String getTlf() {
        return tlf;
    }
   
    protected int getKrPrKm() {
        return krPrKm;
    }
   
    protected int getFastKr() {
        return fastKr;
    }
   
    //en samling "set" metoder til at sætte de private variabler til.
    protected void setID(int i) {
        id = i;
    }
   
    protected void setSponsornavn(String s) {
        Sponsornavn = s;
    }
   
    protected void setAdresse(String a) {
        Adresse = a;
    }
   
    protected void setPostnr(String p) {
        Postnr = p;
    }
   
    protected void setBy(String b) {
        By = b;
    }
   
    protected void setTlf(String t) {
        tlf = t;
    }
   
    protected void setKrPrKm(int kpm) {
        krPrKm = kpm;
    }
   
    protected void setFastKr(int fast) {
        fastKr = fast;
    }
}

class Tour {
    private int distance = 0; //Længde pÃ¥ løbet i meter
    private String navn;
    private String aar;
    private int krVoksenIalt = 0; //Indkørte KR. af voksne
    private int krBarnIalt = 0; //Indkørte KR. af børn
    private int krVoksenGns = 0; //Indkørte kr. i gennemsnit for voksne.
    private int krBarnGns = 0; //Indkørte kr. i gennemsnit for børn.
    private int kmVoksenIalt = 0; //Kørte km af voksne
    private int kmVoksenGns = 0; //Kørte km i gennemsnit af voksne
    private int kmBarnIalt = 0; //Kørte km af børn
    private int kmBarnGns = 0; //Kørte km i gennemsnit af børn
    private int id = 0;
    private Vector DeltagerListe = new Vector(); //Liste over alle deltagere i løbet.
    private Deltager del; //Instance af Deltager klassen.
   
    public Tour() {}
   
    protected void addDeltager(int id, String navn, String adresse, String postnr,
    String by, String rytternr, boolean voksen) {
        del = new Deltager();
       
        del.setID(id);
        del.setNavn(navn);
        del.setAdresse(adresse);
        del.setPostnr(postnr);
        del.setBy(by);
        del.setRytternr(rytternr);
        del.setVoksen(voksen);
       
        DeltagerListe.add(del);
    }
   
    protected int getID() {
        return id;
    }
   
    protected String getNavn() {
        return navn;
    }
   
    protected String getAar() {
        return aar;
    }
   
    protected int getDistance() {
        return distance;
    }
   
    protected int getKrVoksenIalt() {
        return krVoksenIalt;
    }
   
    protected int getKrBarnIalt() {
        return krBarnIalt;
    }
   
    protected int getKrVoksenGns() {
        return krVoksenGns;
    }
   
    protected int getKrBarnGns() {
        return krBarnGns;
    }
   
    protected int getKmVoksenIalt() {
        return kmVoksenIalt;
    }
   
    protected int getKmVoksenGns() {
        return kmVoksenGns;
    }
   
    protected int getKmBarnIalt() {
        return kmBarnIalt;
    }
   
    protected int getKmBarnGns() {
        return kmBarnGns;
    }
   
    protected void setID(int i) {
        id = i;
    }
   
    protected void setNavn(String n) {
        navn = n;
    }
   
    protected void setAar(String a) {
        aar = a;
    }
   
    protected void setDistance(int d) {
        distance = d;
    }
   
    protected void setKrVoksenIalt(int kvi) {
        krVoksenIalt = kvi;
    }
   
    protected void setKrBarnIalt(int kbi) {
        krBarnIalt = kbi;
    }
   
    protected void setKrVoksenGns(int kvg) {
        krVoksenGns = kvg;
    }
   
    protected void setKrBarnGns(int kbg) {
        krBarnGns = kbg;
    }
   
    protected void setkmVoksenIalt(int kvi) {
        kmVoksenIalt = kvi;
    }
   
    protected void setKmBarnIalt(int kbi) {
        kmBarnIalt = kbi;
    }
   
    protected void setKmVoksenGns(int kvg) {
        kmVoksenGns = kvg;
    }
   
    protected void setKmBarnGns(int kbg) {
        kmBarnGns = kbg;
    }
}

class SAXParserHandler
extends DefaultHandler {
    private Locator locator = null;
    private CykelMain cMain;
    private Tour tour;
    private Deltager del;
   
    public void startDocument() throws SAXException {
       
    }
   
    public void endDocument() throws SAXException {
       
    }
   
    public void setDocumentLocator(Locator locator) {
        this.locator = locator;
    }
   
  /*
  *Skal tage sig af det data der er imellemm et element.
  */
    public void characters(char[] ch, int start, int length) throws SAXException {
        String charString = new String(ch, start, length);
        System.out.println("characters: " + charString);
    }
   
  /*
  *Skal tage sig af attributterne knyttet til et element.
  */
    public void startElement(String namespaceURI, String localName,
    String qName, Attributes atts) throws SAXException {
        cMain = new CykelMain();
        tour = new Tour();
        del = new Deltager();
       
        String tNavn = "";
        String tAar = "";
        int tDistance = 0;
        int tID = 0;
        int del = 0;
        int DoplsID = 0;
        String Dnavn = "";
        String Dadresse = "";
        String Dpostnr = "";
        String Dby = "";
        String Dtlf = "";
        String rytnr = "";
        int vTmp = 0;
        boolean voksen = false;
        int sponid = 0;
        int krprkm = 0;
        int fastkr = 0;
        int spon = 0;
        int SoplsID = 0;
        String Snavn = "";
        String Sadresse = "";
        String Spostnr = "";
        String Sby = "";
        String Stlf = "";
        int rytID = 0;
       
        if (qName == "tour") { //Henter Alle oplysninger ud omkring løbet.
            // list out the attributes and their values
            for (int i = 0; i < atts.getLength(); i++) {
                if (atts.getLocalName(i) == "value") {
                    tID = Integer.parseInt(atts.getValue(i));
                }
                if (atts.getLocalName(i) == "navn") {
                    tNavn = atts.getValue(i);
                }
                if (atts.getLocalName(i) == "year") {
                    tAar = atts.getValue(i);
                }
                if (atts.getLocalName(i) == "distance") {
                    tDistance = Integer.parseInt(atts.getValue(i));
                }
            }
            cMain.addTour(tID, tNavn, tAar, tDistance); //Gemmer oplysninger om løbet.
        }
        if (qName == "deltagere") { //Henter antallet af løbsdeltagere ud.
            for (int i = 0; i < atts.getLength(); i++) {
                System.out.println("Attribute: " + atts.getLocalName(i));
                System.out.println("\tValue: " + atts.getValue(i));
            }
        }
        if (qName == "sponsor") { //Henter antallet af sponsorer ud.
            for (int i = 0; i < atts.getLength(); i++) {
                System.out.println("Attribute: " + atts.getLocalName(i));
                System.out.println("\tValue: " + atts.getValue(i));
            }
        }
        //Henter oplysninger ud omkring en rytter (deltager).
        if (qName == "Doplysning") {
            for (int i = 0; i < atts.getLength(); i++) {
                DoplsID = Integer.parseInt(atts.getValue(i));
            }
        }
        if (qName == "Dnavn") {
            for (int i = 0; i < atts.getLength(); i++) {
                Dnavn = atts.getValue(i);
            }
        }
        if (qName == "Dadresse") {
            for (int i = 0; i < atts.getLength(); i++) {
                Dadresse = atts.getValue(i);
            }
        }
        if (qName == "Dpostnr") {
            for (int i = 0; i < atts.getLength(); i++) {
                Dpostnr = atts.getValue(i);
            }
        }
        if (qName == "Dby") {
            for (int i = 0; i < atts.getLength(); i++) {
                Dby = atts.getValue(i);
            }
        }
        if (qName == "Dtlf") {
            for (int i = 0; i < atts.getLength(); i++) {
                Dtlf = atts.getValue(i);
            }
        }
        if (qName == "rytternr") {
            for (int i = 0; i < atts.getLength(); i++) {
                rytnr = atts.getValue(i);
            }
        }
        if (qName == "voksen") {
            for (int i = 0; i < atts.getLength(); i++) {
                vTmp = Integer.parseInt(atts.getValue(i));
               
                if (vTmp == 1) {
                    voksen = true;
                }
            }
        }
        if (qName == "sponsorid") {
            for (int i = 0; i < atts.getLength(); i++) {
                if (atts.getLocalName(i) == "value") {
                    sponid = Integer.parseInt(atts.getValue(i));
                }
                if (atts.getLocalName(i) == "krprkm") {
                    krprkm = Integer.parseInt(atts.getValue(i));
                }
                if (atts.getLocalName(i) == "fastkr") {
                    fastkr = Integer.parseInt(atts.getValue(i));
                }
            }
        }
        tour.addDeltager(DoplsID, Dnavn, Dadresse, Dpostnr, Dby, rytnr, voksen); //Tilføjer en rytter til løbet.
       
        if (qName == "Soplysning") {
            for (int i = 0; i < atts.getLength(); i++) {
                SoplsID = Integer.parseInt(atts.getValue(i));
            }
        }
        if (qName == "Sponsornavn") {
            for (int i = 0; i < atts.getLength(); i++) {
                Snavn = atts.getValue(i);
            }
        }
        if (qName == "Sadresse") {
            for (int i = 0; i < atts.getLength(); i++) {
                Sadresse = atts.getValue(i);
            }
        }
        if (qName == "Spostnr") {
            for (int i = 0; i < atts.getLength(); i++) {
                Spostnr = atts.getValue(i);
            }
        }
        if (qName == "Sby") {
            for (int i = 0; i < atts.getLength(); i++) {
                Sby = atts.getValue(i);
            }
        }
        if (qName == "Stlf") {
            for (int i = 0; i < atts.getLength(); i++) {
                Stlf = atts.getValue(i);
            }
        }
    }
   
    public void endElement(String namespaceURI, String localName,
    String qName) throws SAXException {
       
    }
   
    public void ignorableWhitespace(char[] ch, int start, int length) throws
    SAXException {
       
    }
   
    public void startPrefixMapping(String prefix, String uri) throws SAXException {
        System.out.println("Begin namespace prefix: " + prefix);
    }
   
    public void endPrefixMapping(String prefix) throws SAXException {
        System.out.println("End namespace prefix: " + prefix);
    }
   
    public void processingInstruction(String instruction, String data) throws
    SAXException {
        System.out.println("Instruction: " + instruction + ", data: " + data);
    }
   
    public void skippedEntity(String name) throws SAXException {
        System.out.println("Skipped entity: " + name);
    }
   
}

XML Fil
<?xml version="1.0" encoding="UTF-8"?>

<!--
    Document  : data.xml
    Created on : 6. januar 2003, 17:39
    Author    : memborg
    Description:
        Purpose of the document follows.
-->

<!DOCTYPE root SYSTEM "root.dtd">

<root>
<tour navn="TEST" year="2003" distance="4" value="1">
    <deltagere antal="1">
        <Doplysning id="1">
            <Dnavn value="Rune Memborg" />
            <Dadresse value="TEST" />
            <Dpostnr value="8800" />
            <Dby value="VIBORG" />
            <Dtlf value="51840135" />
            <voksen value="1"/>
            <rytternr value="12" />
            <sponsorid value="1" krprkm="0" fastkr="0"></sponsorid>
        </Doplysning>
    </deltagere>
    <sponsor antal="1">
        <Soplysning id="1">
            <Sponsornavn value="TEST SPOSNSOR" />
            <Sadresse value="TEST" />
            <Spostnr value="7500" />
            <Sby value="Holstebro" />
            <Stlf value="61462793" />
        </Soplysning>
    </sponsor>
</tour>
<tour navn="TEST2" year="2003" distance="4" value="2">
    <deltagere antal="1">
        <Doplysning id="1">
            <Dnavn value="Rune Memborg" />
            <Dadresse value="TEST" />
            <Dpostnr value="8800" />
            <Dby value="VIBORG" />
            <Dtlf value="51840135" />
            <voksen value="1"/>
            <rytternr value="12" />
            <sponsorid value="1" krprkm="0" fastkr="0"></sponsorid>
        </Doplysning>
    </deltagere>
    <sponsor antal="1">
        <Soplysning id="1">
            <Sponsornavn value="TEST SPOSNSOR" />
            <Sadresse value="TEST" />
            <Spostnr value="7500" />
            <Sby value="Holstebro" />
            <Stlf value="61462793" />
        </Soplysning>
    </sponsor>
</tour>
</root>

Jeg håber nogen forstår hvad der sker jeg synes har været rimelig flink til at beskrive hvad der sker de forskellige steder i koden.

MVH Svuppenator.
Avatar billede svuppenator Nybegynder
10. august 2003 - 17:02 #1
Det eneste der nok er værd at koncentrere sig om er Tour klassen og CykelMain klasse plus SAXhandler, der tager sig af læsning af XML filen.
Avatar billede arne_v Ekspert
10. august 2003 - 17:13 #2
Du laver en ny CykelMain hver gang du starter på et element !

cMain = new CykelMain();

Du skal bruge de globale CykelMain.
Avatar billede arne_v Ekspert
10. august 2003 - 17:14 #3
import java.util.*;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

/**
* <p>Title: CykelProgram</p>
* <p>Description: LAvet til at holde styr på de penge indsmal.igs løb som små foreninger holder undt omkring</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: Memborg Developement</p>
* @author not attributable
* @version 0.1 Alpha
*/

public class CykelProgram {

    private static String dataXML =
        "C:\\data.xml";
    //Variable efter hvor filen ligger.
    static CykelMain cm;

    public static void main(String[] args) throws Exception {
        cm = new CykelMain();
        String tmp = "";
        SAXParserFactory factory = SAXParserFactory.newInstance();
        factory.setValidating(true);
        factory.setNamespaceAware(true);
        SAXParser parser = factory.newSAXParser();
        parser.parse(dataXML, new SAXParserHandler());
        tmp = cm.hentTour(1);
    }
}

class CykelMain {

    private HashMap tourList = new HashMap();
    private Tour tour;
    /** Creates a new instance of CykelMain */
    public CykelMain() {
    }

    protected void addTour(int id, String navn, String aar, int distance) {
        tour = new Tour();
        System.out.println(navn);
        tour.setID(id);
        tour.setNavn(navn);
        tour.setAar(aar);
        tour.setDistance(distance);
        System.out.println("SIZE: " + tourList.size());
        tourList.put(new Integer(id), tour);
        System.out.println("SIZE: " + tourList.size());
    }
    protected String hentTour(int id) {
        String tmp = "";

        tour = (Tour) tourList.get(new Integer(id));
        tmp = tour.getNavn();
        System.out.println("data fra HashMap: " + tmp);
        return tmp;
    }
}

class Deltager {
    private String navn;
    private String adresse;
    private String postNr;
    private String by;
    private String tlf;
    private String rytterNr; //Nummeret på en deltager.
    private boolean voksen; //fortæller om det er en voksen eller et barn.
    private int id;
    private Vector SponsorList = new Vector();
    //En liste over hvilke sponsor denne deltager har.
    private Sponsor spon; //Instance af Sponsor klassen.

    public Deltager() {
    }

    protected void addSponsor(
        int id,
        String sponsornavn,
        String sponsoradresse,
        String sponsorby,
        String sponsorpostnr,
        String Stlf,
        int kpm,
        int fastkr) {
        spon = new Sponsor();

        spon.setID(id);
        spon.setSponsornavn(sponsornavn);
        spon.setAdresse(sponsoradresse);
        spon.setBy(sponsorby);
        spon.setPostnr(sponsorpostnr);
        spon.setTlf(Stlf);
        spon.setKrPrKm(kpm);
        spon.setFastKr(fastkr);

        SponsorList.add(spon);
    }

    protected int getID() {
        return id;
    }

    protected String getNavn() {
        return navn;
    }

    protected String getAdresse() {
        return adresse;
    }

    protected String getPostnr() {
        return postNr;
    }

    protected String getBy() {
        return by;
    }

    protected String getTlf() {
        return tlf;
    }

    protected String getRytterNr() {
        return rytterNr;
    }

    protected boolean getVoksen() {
        return voksen;
    }

    protected void setID(int i) {
        id = i;
    }

    protected void setNavn(String n) {
        navn = n;
    }

    protected void setAdresse(String a) {
        adresse = a;
    }

    protected void setPostnr(String p) {
        postNr = p;
    }

    protected void setBy(String b) {
        by = b;
    }

    protected void setTlf(String t) {
        tlf = t;
    }

    protected void setRytternr(String r) {
        rytterNr = r;
    }

    protected void setVoksen(boolean v) {
        voksen = v;
    }
}

class Sponsor {
    //Liste over private variabler
    private String Sponsornavn; //Navnet pÃ¥ sponsor
    private String Adresse; //Adresse pÃ¥ sponsor
    private String Postnr;
    private String By;
    private String tlf; //Tlf til sponsor
    private int krPrKm; //Kroner indkørt pr. kilometer.
    private int fastKr; //Engangs beløb for hele løbet.
    private int id;

    public Sponsor() {
    }

    //en samling "get" metoder til at fÃ¥ fat i de private variabler med.
    protected int getID() {
        return id;
    }

    protected String getSponsornavn() {
        return Sponsornavn;
    }

    protected String getAdresse() {
        return Adresse;
    }

    protected String getPostnr() {
        return Postnr;
    }

    protected String getBy() {
        return By;
    }

    protected String getTlf() {
        return tlf;
    }

    protected int getKrPrKm() {
        return krPrKm;
    }

    protected int getFastKr() {
        return fastKr;
    }

    //en samling "set" metoder til at sætte de private variabler til.
    protected void setID(int i) {
        id = i;
    }

    protected void setSponsornavn(String s) {
        Sponsornavn = s;
    }

    protected void setAdresse(String a) {
        Adresse = a;
    }

    protected void setPostnr(String p) {
        Postnr = p;
    }

    protected void setBy(String b) {
        By = b;
    }

    protected void setTlf(String t) {
        tlf = t;
    }

    protected void setKrPrKm(int kpm) {
        krPrKm = kpm;
    }

    protected void setFastKr(int fast) {
        fastKr = fast;
    }
}

class Tour {
    private int distance = 0; //Længde pÃ¥ løbet i meter
    private String navn;
    private String aar;
    private int krVoksenIalt = 0; //Indkørte KR. af voksne
    private int krBarnIalt = 0; //Indkørte KR. af børn
    private int krVoksenGns = 0; //Indkørte kr. i gennemsnit for voksne.
    private int krBarnGns = 0; //Indkørte kr. i gennemsnit for børn.
    private int kmVoksenIalt = 0; //Kørte km af voksne
    private int kmVoksenGns = 0; //Kørte km i gennemsnit af voksne
    private int kmBarnIalt = 0; //Kørte km af børn
    private int kmBarnGns = 0; //Kørte km i gennemsnit af børn
    private int id = 0;
    private Vector DeltagerListe = new Vector();
    //Liste over alle deltagere i løbet.
    private Deltager del; //Instance af Deltager klassen.

    public Tour() {
    }

    protected void addDeltager(
        int id,
        String navn,
        String adresse,
        String postnr,
        String by,
        String rytternr,
        boolean voksen) {
        del = new Deltager();

        del.setID(id);
        del.setNavn(navn);
        del.setAdresse(adresse);
        del.setPostnr(postnr);
        del.setBy(by);
        del.setRytternr(rytternr);
        del.setVoksen(voksen);

        DeltagerListe.add(del);
    }

    protected int getID() {
        return id;
    }

    protected String getNavn() {
        return navn;
    }

    protected String getAar() {
        return aar;
    }

    protected int getDistance() {
        return distance;
    }

    protected int getKrVoksenIalt() {
        return krVoksenIalt;
    }

    protected int getKrBarnIalt() {
        return krBarnIalt;
    }

    protected int getKrVoksenGns() {
        return krVoksenGns;
    }

    protected int getKrBarnGns() {
        return krBarnGns;
    }

    protected int getKmVoksenIalt() {
        return kmVoksenIalt;
    }

    protected int getKmVoksenGns() {
        return kmVoksenGns;
    }

    protected int getKmBarnIalt() {
        return kmBarnIalt;
    }

    protected int getKmBarnGns() {
        return kmBarnGns;
    }

    protected void setID(int i) {
        id = i;
    }

    protected void setNavn(String n) {
        navn = n;
    }

    protected void setAar(String a) {
        aar = a;
    }

    protected void setDistance(int d) {
        distance = d;
    }

    protected void setKrVoksenIalt(int kvi) {
        krVoksenIalt = kvi;
    }

    protected void setKrBarnIalt(int kbi) {
        krBarnIalt = kbi;
    }

    protected void setKrVoksenGns(int kvg) {
        krVoksenGns = kvg;
    }

    protected void setKrBarnGns(int kbg) {
        krBarnGns = kbg;
    }

    protected void setkmVoksenIalt(int kvi) {
        kmVoksenIalt = kvi;
    }

    protected void setKmBarnIalt(int kbi) {
        kmBarnIalt = kbi;
    }

    protected void setKmVoksenGns(int kvg) {
        kmVoksenGns = kvg;
    }

    protected void setKmBarnGns(int kbg) {
        kmBarnGns = kbg;
    }
}

class SAXParserHandler extends DefaultHandler {
    private Locator locator = null;
    private Tour tour;
    private Deltager del;

    public void startDocument() throws SAXException {

    }

    public void endDocument() throws SAXException {

    }

    public void setDocumentLocator(Locator locator) {
        this.locator = locator;
    }

    /*
    *Skal tage sig af det data der er imellemm et element.
    */
    public void characters(char[] ch, int start, int length)
        throws SAXException {
        String charString = new String(ch, start, length);
        System.out.println("characters: " + charString);
    }

    /*
    *Skal tage sig af attributterne knyttet til et element.
    */
    public void startElement(
        String namespaceURI,
        String localName,
        String qName,
        Attributes atts)
        throws SAXException {
        tour = new Tour();
        del = new Deltager();

        String tNavn = "";
        String tAar = "";
        int tDistance = 0;
        int tID = 0;
        int del = 0;
        int DoplsID = 0;
        String Dnavn = "";
        String Dadresse = "";
        String Dpostnr = "";
        String Dby = "";
        String Dtlf = "";
        String rytnr = "";
        int vTmp = 0;
        boolean voksen = false;
        int sponid = 0;
        int krprkm = 0;
        int fastkr = 0;
        int spon = 0;
        int SoplsID = 0;
        String Snavn = "";
        String Sadresse = "";
        String Spostnr = "";
        String Sby = "";
        String Stlf = "";
        int rytID = 0;

        if (qName == "tour") { //Henter Alle oplysninger ud omkring løbet.
            // list out the attributes and their values
            for (int i = 0; i < atts.getLength(); i++) {
                if (atts.getLocalName(i) == "value") {
                    tID = Integer.parseInt(atts.getValue(i));
                }
                if (atts.getLocalName(i) == "navn") {
                    tNavn = atts.getValue(i);
                }
                if (atts.getLocalName(i) == "year") {
                    tAar = atts.getValue(i);
                }
                if (atts.getLocalName(i) == "distance") {
                    tDistance = Integer.parseInt(atts.getValue(i));
                }
            }
            CykelProgram.cm.addTour(tID, tNavn, tAar, tDistance);
            //Gemmer oplysninger om løbet.
        }
        if (qName == "deltagere") { //Henter antallet af løbsdeltagere ud.
            for (int i = 0; i < atts.getLength(); i++) {
                System.out.println("Attribute: " + atts.getLocalName(i));
                System.out.println("\tValue: " + atts.getValue(i));
            }
        }
        if (qName == "sponsor") { //Henter antallet af sponsorer ud.
            for (int i = 0; i < atts.getLength(); i++) {
                System.out.println("Attribute: " + atts.getLocalName(i));
                System.out.println("\tValue: " + atts.getValue(i));
            }
        }
        //Henter oplysninger ud omkring en rytter (deltager).
        if (qName == "Doplysning") {
            for (int i = 0; i < atts.getLength(); i++) {
                DoplsID = Integer.parseInt(atts.getValue(i));
            }
        }
        if (qName == "Dnavn") {
            for (int i = 0; i < atts.getLength(); i++) {
                Dnavn = atts.getValue(i);
            }
        }
        if (qName == "Dadresse") {
            for (int i = 0; i < atts.getLength(); i++) {
                Dadresse = atts.getValue(i);
            }
        }
        if (qName == "Dpostnr") {
            for (int i = 0; i < atts.getLength(); i++) {
                Dpostnr = atts.getValue(i);
            }
        }
        if (qName == "Dby") {
            for (int i = 0; i < atts.getLength(); i++) {
                Dby = atts.getValue(i);
            }
        }
        if (qName == "Dtlf") {
            for (int i = 0; i < atts.getLength(); i++) {
                Dtlf = atts.getValue(i);
            }
        }
        if (qName == "rytternr") {
            for (int i = 0; i < atts.getLength(); i++) {
                rytnr = atts.getValue(i);
            }
        }
        if (qName == "voksen") {
            for (int i = 0; i < atts.getLength(); i++) {
                vTmp = Integer.parseInt(atts.getValue(i));

                if (vTmp == 1) {
                    voksen = true;
                }
            }
        }
        if (qName == "sponsorid") {
            for (int i = 0; i < atts.getLength(); i++) {
                if (atts.getLocalName(i) == "value") {
                    sponid = Integer.parseInt(atts.getValue(i));
                }
                if (atts.getLocalName(i) == "krprkm") {
                    krprkm = Integer.parseInt(atts.getValue(i));
                }
                if (atts.getLocalName(i) == "fastkr") {
                    fastkr = Integer.parseInt(atts.getValue(i));
                }
            }
        }
        tour.addDeltager(DoplsID, Dnavn, Dadresse, Dpostnr, Dby, rytnr, voksen);
        //Tilføjer en rytter til løbet.

        if (qName == "Soplysning") {
            for (int i = 0; i < atts.getLength(); i++) {
                SoplsID = Integer.parseInt(atts.getValue(i));
            }
        }
        if (qName == "Sponsornavn") {
            for (int i = 0; i < atts.getLength(); i++) {
                Snavn = atts.getValue(i);
            }
        }
        if (qName == "Sadresse") {
            for (int i = 0; i < atts.getLength(); i++) {
                Sadresse = atts.getValue(i);
            }
        }
        if (qName == "Spostnr") {
            for (int i = 0; i < atts.getLength(); i++) {
                Spostnr = atts.getValue(i);
            }
        }
        if (qName == "Sby") {
            for (int i = 0; i < atts.getLength(); i++) {
                Sby = atts.getValue(i);
            }
        }
        if (qName == "Stlf") {
            for (int i = 0; i < atts.getLength(); i++) {
                Stlf = atts.getValue(i);
            }
        }
    }

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

    }

    public void ignorableWhitespace(char[] ch, int start, int length)
        throws SAXException {

    }

    public void startPrefixMapping(String prefix, String uri)
        throws SAXException {
        System.out.println("Begin namespace prefix: " + prefix);
    }

    public void endPrefixMapping(String prefix) throws SAXException {
        System.out.println("End namespace prefix: " + prefix);
    }

    public void processingInstruction(String instruction, String data)
        throws SAXException {
        System.out.println("Instruction: " + instruction + ", data: " + data);
    }

    public void skippedEntity(String name) throws SAXException {
        System.out.println("Skipped entity: " + name);
    }

}
Avatar billede arne_v Ekspert
10. august 2003 - 17:16 #4
Jeg har helt fjernet cMain og refererer til CykelProgram.cm ...
Avatar billede arne_v Ekspert
10. august 2003 - 17:18 #5
public void characters(char[] ch, int start, int length)
        throws SAXException {
        String charString = new String(ch, start, length);
    }

vil iøvrigt give dig problemer på et tidspunkt !

Du kan sagtens risikere at characters ikke bliver kaldt en gange med
hele strengen men flere gange med dele af strengen. Derfor skal
man bruge en StringBuffer og appende.
Avatar billede arne_v Ekspert
10. august 2003 - 17:24 #6
Jeg har et eksempel som jeg har postet mange gange. Det er ikke nødvendigvis
bedre end så mange andre metoder. Men det indeholder 2 pointer:
  - characters -> StringBuffer append se sidste kommentar
  - data struktur over i parser constructoren for at undgå en grim
    referance

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

public class SaxTest3 {
    private final static String XML_FILE = "C:\\saxtest.xml";
    public static void main(String[] args) {
        ArrayList data1 = new ArrayList();
        data1.add(new Element(1, "a", true));
        data1.add(new Element(2, "bb", false));
        data1.add(new Element(3, "ccc", true));
        writeXml(data1, XML_FILE);
        ArrayList data2 = readXml(XML_FILE);
        System.out.println(data2);
    }
    private static void writeXml(ArrayList data, String filename) {
        try {
            PrintWriter pw = new PrintWriter(new FileOutputStream(filename));
            pw.println("<?xml version='1.0' standalone='yes'?>");
            pw.println("<arraylist>");
            for (int i = 0; i < data.size(); i++) {
                Element e = (Element)data.get(i);
                pw.println("  <element include='" + e.isInclude() + "'>");
                pw.println("      <nbr>" + e.getNbr() + "</nbr>");
                pw.println("      <name>" + e.getName() + "</name>");
                pw.println("  </element>");
            }
            pw.println("</arraylist>");
            pw.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
    private static ArrayList readXml(String filename) {
        ArrayList result = new ArrayList();
        try {
            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser sp = spf.newSAXParser();
            XMLReader xr = sp.getXMLReader();
            xr.setContentHandler(new MySaxParser2(result));
            xr.parse(filename);
        } catch (FactoryConfigurationError e) {
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }
}
class MySaxParser2 extends DefaultHandler {
    private StringBuffer element = new StringBuffer();
    private Element elmobj;
    private ArrayList result;
    public MySaxParser2(ArrayList result) {
        this.result = result;
    }
    public void characters(char buf[], int offset, int len)
        throws SAXException {
        element.append(new String(buf, offset, len));
        return;
    }
    public void startElement(
        String namespaceURI,
        String localName,
        String rawName,
        Attributes atts)
        throws SAXException {
        if (rawName.equals("element")) {
            elmobj = new Element();
            elmobj.setInclude(Boolean.valueOf(atts.getValue("include")).booleanValue());
        }
        if (rawName.equals("nbr")) {
            element = new StringBuffer();
        }
        if (rawName.equals("name")) {
            element = new StringBuffer();
        }
        return;
    }
    public void endElement(
        String namespaceURI,
        String localName,
        String rawName)
        throws SAXException {
        if (rawName.equals("element")) {
            result.add(elmobj);
        }
        if (rawName.equals("nbr")) {
            elmobj.setNbr(Integer.parseInt(element.toString()));
        }
        if (rawName.equals("name")) {
            elmobj.setName(element.toString());
        }
        return;
    }
}
class Element {
    private int nbr;
    private String name;
    private boolean include;
    public Element() {
        nbr = 0;
        name = null;
        include = false;
    }
    public Element(int nbr, String name, boolean include) {
        this.nbr = nbr;
        this.name = name;
        this.include = include;
    }
    public int getNbr() {
        return nbr;
    }
    public String getName() {
        return name;
    }
    public boolean isInclude() {
        return include;
    }
    public void setNbr(int nbr) {
        this.nbr = nbr;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setInclude(boolean b) {
        include = b;
    }
    public String toString() {
        return ("[" + nbr + "," + name + "," + include + "]");
    }
}
Avatar billede arne_v Ekspert
18. august 2003 - 23:30 #7
Har du fået det til at virke ?
Avatar billede svuppenator Nybegynder
20. august 2003 - 17:01 #8
Jeg har fået det til at virke...
Tak for hjælpen det var kanon... Det er ikke sådan når man tager noget gammel kode op for at arbejde videre på det og kan ikke rigtig huske hvad man har tænkt på dengang.
Avatar billede svuppenator Nybegynder
23. august 2003 - 18:22 #9
Nu får jeg en:
java.lang.NullPointerException
        at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:658)
        at org.apache.crimson.parser.Parser2.parse(Parser2.java:333)
        at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
        at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
        at javax.xml.parsers.SAXParser.parse(SAXParser.java:223)
        at CykelProgram.main(CykelProgram.java:33)
Exception in thread "main"

i min main metode ved denne linje:

parser.parse(dataXML, new SAXParserHandler());

når jeg har lavet disse ændringer i koden:

protected Tour tour; isteden for en private
i CykelMain

og prøvede at lave det samme trick ved at tilføje en deltager som da jeg ville tilføje en tour

CykelProgram.cm.tour.addDeltager(DoplsID, Dnavn, Dadresse, Dpostnr, Dby, rytnr, voksen);
Avatar billede arne_v Ekspert
23. august 2003 - 18:33 #10
Kunne du copy paste koden som den ser ud nu ind, så vil jeg kigge
på det (men jeg vil helst ikke gætte på hvordan koden ser ud).
Avatar billede svuppenator Nybegynder
23. august 2003 - 19:35 #11
import java.util.*;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

/**
* <p>Title: CykelProgram</p>
* <p>Description: LAvet til at holde styr på de penge indsmal.igs løb som små foreninger holder undt omkring</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: Memborg Developement</p>
* @author not attributable
* @version 0.1 Alpha
*/

public class CykelProgram {
   
    private static String dataXML =
    "C:\\Documents and Settings\\RMH\\My Documents\\Rune\\Java\\CykelProgram\\data.xml";
    //Variable efter hvor filen ligger.
    static CykelMain cm;
   
    public static void main(String[] args) throws Exception {
        cm = new CykelMain();
        String tmp = "";
        SAXParserFactory factory = SAXParserFactory.newInstance();
        factory.setValidating(true);
        factory.setNamespaceAware(true);
        SAXParser parser = factory.newSAXParser();
        parser.parse(dataXML, new SAXParserHandler()); --> Fejl linje!!
        tmp = cm.hentTourNavn(1);
    }
}

class CykelMain {
   
    private HashMap tourList = new HashMap();
    protected Tour tour;  --> Ændring!!!
    /** Creates a new instance of CykelMain */
    public CykelMain() {
    }
   
    protected void addTour(int id, String navn, String aar, int distance) {
        tour = new Tour();
        tour.setID(id);
        tour.setNavn(navn);
        tour.setAar(aar);
        tour.setDistance(distance);
        tourList.put(new Integer(id), tour);
    }
    protected String hentTourNavn(int id) {
        String tmp = "";
        tour = (Tour) tourList.get(new Integer(id));
        tmp = tour.getNavn();
        return tmp;
    }
}

class Deltager {
    private String navn;
    private String adresse;
    private String postNr;
    private String by;
    private String tlf;
    private String rytterNr; //Nummeret på en deltager.
    private boolean voksen; //fortæller om det er en voksen eller et barn.
    private int id;
    private Vector SponsorList = new Vector();
    //En liste over hvilke sponsor denne deltager har.
    private Sponsor spon; //Instance af Sponsor klassen.
   
    public Deltager() {
    }
   
    protected void addSponsor(
    int id,
    String sponsornavn,
    String sponsoradresse,
    String sponsorby,
    String sponsorpostnr,
    String Stlf,
    int kpm,
    int fastkr) {
        spon = new Sponsor();
       
        spon.setID(id);
        spon.setSponsornavn(sponsornavn);
        spon.setAdresse(sponsoradresse);
        spon.setBy(sponsorby);
        spon.setPostnr(sponsorpostnr);
        spon.setTlf(Stlf);
        spon.setKrPrKm(kpm);
        spon.setFastKr(fastkr);
       
        SponsorList.add(spon);
    }
   
    protected int getID() {
        return id;
    }
   
    protected String getNavn() {
        return navn;
    }
   
    protected String getAdresse() {
        return adresse;
    }
   
    protected String getPostnr() {
        return postNr;
    }
   
    protected String getBy() {
        return by;
    }
   
    protected String getTlf() {
        return tlf;
    }
   
    protected String getRytterNr() {
        return rytterNr;
    }
   
    protected boolean getVoksen() {
        return voksen;
    }
   
    protected void setID(int i) {
        id = i;
    }
   
    protected void setNavn(String n) {
        navn = n;
    }
   
    protected void setAdresse(String a) {
        adresse = a;
    }
   
    protected void setPostnr(String p) {
        postNr = p;
    }
   
    protected void setBy(String b) {
        by = b;
    }
   
    protected void setTlf(String t) {
        tlf = t;
    }
   
    protected void setRytternr(String r) {
        rytterNr = r;
    }
   
    protected void setVoksen(boolean v) {
        voksen = v;
    }
}

class Sponsor {
    //Liste over private variabler
    private String Sponsornavn; //Navnet på sponsor
    private String Adresse; //Adresse på sponsor
    private String Postnr;
    private String By;
    private String tlf; //Tlf til sponsor
    private int krPrKm; //Kroner indkørt pr. kilometer.
    private int fastKr; //Engangs beløb for hele løbet.
    private int id;
   
    public Sponsor() {
    }
   
    //en samling "get" metoder til at få fat i de private variabler med.
    protected int getID() {
        return id;
    }
   
    protected String getSponsornavn() {
        return Sponsornavn;
    }
   
    protected String getAdresse() {
        return Adresse;
    }
   
    protected String getPostnr() {
        return Postnr;
    }
   
    protected String getBy() {
        return By;
    }
   
    protected String getTlf() {
        return tlf;
    }
   
    protected int getKrPrKm() {
        return krPrKm;
    }
   
    protected int getFastKr() {
        return fastKr;
    }
   
    //en samling "set" metoder til at sætte de private variabler til.
    protected void setID(int i) {
        id = i;
    }
   
    protected void setSponsornavn(String s) {
        Sponsornavn = s;
    }
   
    protected void setAdresse(String a) {
        Adresse = a;
    }
   
    protected void setPostnr(String p) {
        Postnr = p;
    }
   
    protected void setBy(String b) {
        By = b;
    }
   
    protected void setTlf(String t) {
        tlf = t;
    }
   
    protected void setKrPrKm(int kpm) {
        krPrKm = kpm;
    }
   
    protected void setFastKr(int fast) {
        fastKr = fast;
    }
}

class Tour {
    private int distance = 0; //Længde på løbet i meter
    private String navn;
    private String aar;
    private int krVoksenIalt = 0; //Indkørte KR. af voksne
    private int krBarnIalt = 0; //Indkørte KR. af børn
    private int krVoksenGns = 0; //Indkørte kr. i gennemsnit for voksne.
    private int krBarnGns = 0; //Indkørte kr. i gennemsnit for børn.
    private int kmVoksenIalt = 0; //Kørte km af voksne
    private int kmVoksenGns = 0; //Kørte km i gennemsnit af voksne
    private int kmBarnIalt = 0; //Kørte km af børn
    private int kmBarnGns = 0; //Kørte km i gennemsnit af børn
    private int id = 0;
    private Vector DeltagerListe = new Vector();
    //Liste over alle deltagere i løbet.
    private Deltager del; //Instance af Deltager klassen.
   
    public Tour() {
    }
   
    protected void addDeltager(
    int id,
    String navn,
    String adresse,
    String postnr,
    String by,
    String rytternr,
    boolean voksen) {
        del = new Deltager();
       
        del.setID(id);
        del.setNavn(navn);
        del.setAdresse(adresse);
        del.setPostnr(postnr);
        del.setBy(by);
        del.setRytternr(rytternr);
        del.setVoksen(voksen);
       
        System.out.println(DeltagerListe.size());
        DeltagerListe.add(del);
        System.out.println(DeltagerListe.size());
    }
   
    /*protected String hentDeltagerNavn(int id)
    {
       
    }*/
   
    protected int getID() {
        return id;
    }
   
    protected String getNavn() {
        return navn;
    }
   
    protected String getAar() {
        return aar;
    }
   
    protected int getDistance() {
        return distance;
    }
   
    protected int getKrVoksenIalt() {
        return krVoksenIalt;
    }
   
    protected int getKrBarnIalt() {
        return krBarnIalt;
    }
   
    protected int getKrVoksenGns() {
        return krVoksenGns;
    }
   
    protected int getKrBarnGns() {
        return krBarnGns;
    }
   
    protected int getKmVoksenIalt() {
        return kmVoksenIalt;
    }
   
    protected int getKmVoksenGns() {
        return kmVoksenGns;
    }
   
    protected int getKmBarnIalt() {
        return kmBarnIalt;
    }
   
    protected int getKmBarnGns() {
        return kmBarnGns;
    }
   
    protected void setID(int i) {
        id = i;
    }
   
    protected void setNavn(String n) {
        navn = n;
    }
   
    protected void setAar(String a) {
        aar = a;
    }
   
    protected void setDistance(int d) {
        distance = d;
    }
   
    protected void setKrVoksenIalt(int kvi) {
        krVoksenIalt = kvi;
    }
   
    protected void setKrBarnIalt(int kbi) {
        krBarnIalt = kbi;
    }
   
    protected void setKrVoksenGns(int kvg) {
        krVoksenGns = kvg;
    }
   
    protected void setKrBarnGns(int kbg) {
        krBarnGns = kbg;
    }
   
    protected void setkmVoksenIalt(int kvi) {
        kmVoksenIalt = kvi;
    }
   
    protected void setKmBarnIalt(int kbi) {
        kmBarnIalt = kbi;
    }
   
    protected void setKmVoksenGns(int kvg) {
        kmVoksenGns = kvg;
    }
   
    protected void setKmBarnGns(int kbg) {
        kmBarnGns = kbg;
    }
}

class SAXParserHandler extends DefaultHandler {
    private Locator locator = null;
    private Tour tour;
    private Deltager del;
   
    public void startDocument() throws SAXException {
       
    }
   
    public void endDocument() throws SAXException {
       
    }
   
    public void setDocumentLocator(Locator locator) {
        this.locator = locator;
    }
   
    /*
    *Skal tage sig af det data der er imellemm et element.
    */
    public void characters(char[] ch, int start, int length)
    throws SAXException {
        String charString = new String(ch, start, length);
        //System.out.println("characters: " + charString);
    }
   
    /*
    *Skal tage sig af attributterne knyttet til et element.
    */
    public void startElement(
    String namespaceURI,
    String localName,
    String qName,
    Attributes atts)
    throws SAXException {
        tour = new Tour();
        del = new Deltager();
       
        String tNavn = "";
        String tAar = "";
        int tDistance = 0;
        int tID = 0;
        int del = 0;
        int DoplsID = 0;
        String Dnavn = "";
        String Dadresse = "";
        String Dpostnr = "";
        String Dby = "";
        String Dtlf = "";
        String rytnr = "";
        int vTmp = 0;
        boolean voksen = false;
        int sponid = 0;
        int krprkm = 0;
        int fastkr = 0;
        int spon = 0;
        int SoplsID = 0;
        String Snavn = "";
        String Sadresse = "";
        String Spostnr = "";
        String Sby = "";
        String Stlf = "";
        int rytID = 0;
       
        if (qName == "tour") { //Henter Alle oplysninger ud omkring løbet.
            // list out the attributes and their values
            for (int i = 0; i < atts.getLength(); i++) {
                if (atts.getLocalName(i) == "value") {
                    tID = Integer.parseInt(atts.getValue(i));
                }
                if (atts.getLocalName(i) == "navn") {
                    tNavn = atts.getValue(i);
                }
                if (atts.getLocalName(i) == "year") {
                    tAar = atts.getValue(i);
                }
                if (atts.getLocalName(i) == "distance") {
                    tDistance = Integer.parseInt(atts.getValue(i));
                }
            }
            CykelProgram.cm.addTour(tID, tNavn, tAar, tDistance);
            //Gemmer oplysninger om løbet.
        }
        if (qName == "deltagere") { //Henter antallet af løbsdeltagere ud.
            for (int i = 0; i < atts.getLength(); i++) {
                //System.out.println("Attribute: " + atts.getLocalName(i));
                //System.out.println("\tValue: " + atts.getValue(i));
            }
        }
        if (qName == "sponsor") { //Henter antallet af sponsorer ud.
            for (int i = 0; i < atts.getLength(); i++) {
                //System.out.println("Attribute: " + atts.getLocalName(i));
                //System.out.println("\tValue: " + atts.getValue(i));
            }
        }
        //Henter oplysninger ud omkring en rytter (deltager).
        if (qName == "Doplysning") {
            for (int i = 0; i < atts.getLength(); i++) {
                DoplsID = Integer.parseInt(atts.getValue(i));
            }
        }
        if (qName == "Dnavn") {
            for (int i = 0; i < atts.getLength(); i++) {
                Dnavn = atts.getValue(i);
            }
        }
        if (qName == "Dadresse") {
            for (int i = 0; i < atts.getLength(); i++) {
                Dadresse = atts.getValue(i);
            }
        }
        if (qName == "Dpostnr") {
            for (int i = 0; i < atts.getLength(); i++) {
                Dpostnr = atts.getValue(i);
            }
        }
        if (qName == "Dby") {
            for (int i = 0; i < atts.getLength(); i++) {
                Dby = atts.getValue(i);
            }
        }
        if (qName == "Dtlf") {
            for (int i = 0; i < atts.getLength(); i++) {
                Dtlf = atts.getValue(i);
            }
        }
        if (qName == "rytternr") {
            for (int i = 0; i < atts.getLength(); i++) {
                rytnr = atts.getValue(i);
            }
        }
        if (qName == "voksen") {
            for (int i = 0; i < atts.getLength(); i++) {
                vTmp = Integer.parseInt(atts.getValue(i));
               
                if (vTmp == 1) {
                    voksen = true;
                }
            }
        }
        if (qName == "sponsorid") {
            for (int i = 0; i < atts.getLength(); i++) {
                if (atts.getLocalName(i) == "value") {
                    sponid = Integer.parseInt(atts.getValue(i));
                }
                if (atts.getLocalName(i) == "krprkm") {
                    krprkm = Integer.parseInt(atts.getValue(i));
                }
                if (atts.getLocalName(i) == "fastkr") {
                    fastkr = Integer.parseInt(atts.getValue(i));
                }
            }
        }
        CykelProgram.cm.tour.addDeltager(DoplsID, Dnavn, Dadresse, Dpostnr, Dby, rytnr, voksen); -->> ÆNDRING!!
        //Tilføjer en rytter til løbet.
       
        if (qName == "Soplysning") {
            for (int i = 0; i < atts.getLength(); i++) {
                SoplsID = Integer.parseInt(atts.getValue(i));
            }
        }
        if (qName == "Sponsornavn") {
            for (int i = 0; i < atts.getLength(); i++) {
                Snavn = atts.getValue(i);
            }
        }
        if (qName == "Sadresse") {
            for (int i = 0; i < atts.getLength(); i++) {
                Sadresse = atts.getValue(i);
            }
        }
        if (qName == "Spostnr") {
            for (int i = 0; i < atts.getLength(); i++) {
                Spostnr = atts.getValue(i);
            }
        }
        if (qName == "Sby") {
            for (int i = 0; i < atts.getLength(); i++) {
                Sby = atts.getValue(i);
            }
        }
        if (qName == "Stlf") {
            for (int i = 0; i < atts.getLength(); i++) {
                Stlf = atts.getValue(i);
            }
        }
    }
   
    public void endElement(String namespaceURI, String localName, String qName)
    throws SAXException {
       
    }
   
    public void ignorableWhitespace(char[] ch, int start, int length)
    throws SAXException {
       
    }
   
    public void startPrefixMapping(String prefix, String uri)
    throws SAXException {
        System.out.println("Begin namespace prefix: " + prefix);
    }
   
    public void endPrefixMapping(String prefix) throws SAXException {
        System.out.println("End namespace prefix: " + prefix);
    }
   
    public void processingInstruction(String instruction, String data)
    throws SAXException {
        System.out.println("Instruction: " + instruction + ", data: " + data);
    }
   
    public void skippedEntity(String name) throws SAXException {
        System.out.println("Skipped entity: " + name);
    }
   
}
Avatar billede svuppenator Nybegynder
23. august 2003 - 19:36 #12
Håber ikke jeg er til besvær... vil gerne udlode nogle flelre point hvis det tager overhånd... :)
Avatar billede arne_v Ekspert
23. august 2003 - 20:03 #13
Jeg flyttede initialiseringen af tour op fra addTour til CykelMain
constructor så forsvandt fejlen:

    public CykelMain() {
        tour = new Tour();
    }
 
    protected void addTour(int id, String navn, String aar, int distance) {
        tour.setID(id);
        tour.setNavn(navn);
        tour.setAar(aar);
        tour.setDistance(distance);
        tourList.put(new Integer(id), tour);
    }
Avatar billede arne_v Ekspert
23. august 2003 - 20:05 #14
Jeg har ikke checket om al logikken er iorden.

Men tour skal have et objekt for at man kan kalde:

CykelProgram.cm.tour.addDeltager(DoplsID, Dnavn, Dadresse, Dpostnr, Dby, rytnr, voksen);
Avatar billede arne_v Ekspert
23. august 2003 - 20:06 #15
Jeg undrer mig lidt over at du har et statisk tour objekt - skulle
deltagerne ikke addes til de tour objekter i tour listen.
Avatar billede svuppenator Nybegynder
24. august 2003 - 11:16 #16
Jo... som sagt det er noget gammel kode jeg har gang i så jeg er heller ikke selv med på det... hehe... men jo deltagerne skulle addes til tour...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester