Det er jo et godt spørgsmål...
Generelt med SAX er der jo tale om
manuel parsing af kilde XML-dokumentet så den bedste måde er som regel
af rejse nogle flag, der indikerer hvornår data til et objekt er parset
færdig hvorefter det oprettes. Hvor objketet oprettes / opdateres er som
regel et spørgsmål om smag.
Hvis du laver mange af disse "gennemlæse XML-dokument og
opdatere/konstruere Java objekter"-opgaver kan det nok godt betale sig
at tage et blik på JAXB ("Java API for XML Binding" fra Sun) eller
Castor (OpenSource alternativ -
http://www.castor.org).
lekkim
Tobias Michaelsem wrote:
>
> Hvis jeg har lavet en extension af DefaultHandler til at (SAX) parse en
> xml fil, og i løbet af parsningen gerne vil have opdateret et object fra
> den klasse der har kaldt parseren - hvordan er det så man gør?
>
> Altså, hvis jeg vil lave noget ala:
>
> Hashtable toupdate = new Hashtable();
> handler = new MyHandler(toupdate);
> xmlreader.setContentHandler(handler);
> xmlreader.parse(xmlfile);
> // toupdate er nu blevet ændret...
>
>
> Dette virker ikke:
>
> public class MyHandler extends DefaultHandler {
> private Hashtable tbl;
> public MyHandler(Hashtable tbl)
> this.tbl = tbl;
> }
> public void startElement(...) {
> ...
> tbl.put(key, value);
> ...
> }
> }
>