Toon posts:

[]Java/SAX] waarden van childnodes

Pagina: 1
Acties:

Verwijderd

Topicstarter
mijn xml ziet er alsvolgt uit:
<root>
<data1>.......</data1>
<data2>.......</data2>
<data3>.......</data3>
</root>

De startElement(...) methode wordt aangeroepen wanneer de parser <root> leest, maar nu wil ik op dat moment meteen de waarden van de childnodes (dus <data1>,<data2> en <data3>) meten te lezen. Hoe doe ik dit?

Alvast dank.

Verwijderd

http://www.saxproject.org/

Vooral met: http://www.saxproject.org/quickstart.html zal je verder moeten helpen.
http://www.google.nl/sear...&meta=&btnG=Google+zoeken Eerste hit btw...

[ Voor 77% gewijzigd door Verwijderd op 06-12-2006 16:34 ]


  • den 150
  • Registratie: Oktober 2002
  • Niet online
De waarde van de textnodes in je data nodes krijg je doordat de parser characters() oproept van je ContentHandler, die kan je dus niet weten in de aanroep van startElement().

Voor wat jij wil doen gebruik je veel beter DOM. Bij dom wordt eerst heel je xml geparsed en krijg je er dan een tree representatie van. Bij SAX worden tijdens het parsen events gegenereerd (zoals startElement en characters) die je dan kan processen. Jij wil data processen waar de parser nog niet eens is geweest.

Verwijderd

Topicstarter
den 150 schreef op woensdag 06 december 2006 @ 19:54:
De waarde van de textnodes in je data nodes krijg je doordat de parser characters() oproept van je ContentHandler, die kan je dus niet weten in de aanroep van startElement().

Voor wat jij wil doen gebruik je veel beter DOM. Bij dom wordt eerst heel je xml geparsed en krijg je er dan een tree representatie van. Bij SAX worden tijdens het parsen events gegenereerd (zoals startElement en characters) die je dan kan processen. Jij wil data processen waar de parser nog niet eens is geweest.
Dank je wel. Vanwege performance redenen kan ik geen DOM parser gebruiken, daarvoor is de te parsen file te groot. Maar ik heb inmiddels een work-around gevonden en de file wordt geparsed.

[ Voor 39% gewijzigd door Verwijderd op 08-12-2006 13:23 ]


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 08:22
Dat kan heel makkelijk met Apache XMLBeans.

[ Voor 10% gewijzigd door Kwistnix op 07-12-2006 19:01 ]


Verwijderd

Topicstarter
FallenAngel666 schreef op donderdag 07 december 2006 @ 19:00:
Dat kan heel makkelijk met Apache XMLBeans.
Het probleem is dat ik beperkt ben tot de Java 1.5 API en XMLBeans maken daar helaas geen deel van uit. Toch bedankt voor je reactie.

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static void main(String[] args) {
    String file = "c:/data.xml";
    String schema = "c:/schema.xsd";
    InputSource src;
    try {
        SAXParserFactory spf = SAXParserFactory.newInstance();
        spf.setNamespaceAware(true);
        spf.setValidating(true);
        SAXParser sp = spf.newSAXParser();
        sp.setProperty("SCHEMA_LANGUAGE", "http://www.w3.org/2001/XMLSchema");
        sp.setProperty("SCHEMA_SOURCE", schema);
        XMLReader xr = sp.getXMLReader();
        xr.setContentHandler(new MyContentHandler());
        src = new InputSource(new FileInputStream(file));
        xr.parse(src);
    } catch(IOException e) {
        /* log error */
    } catch(SAXException e) {
        /* log error */
    } catch(ParserConfigurationException e) {
        /* log error */
    }
}

Ik probeer hierboven dus het xsd ('schema') te linken aan het te parsen bestand ('file'), echter de code hierboven werkt niet (compileert wel goed). Iemand een idee wat ik verkeerd doe?

[ Voor 3% gewijzigd door Verwijderd op 08-12-2006 13:28 ]

Pagina: 1