Ciao a tutti! Mi chiamo Marcello ed ho il seguente obiettivo:
devo fare il parsing di un documento xml per recuperare e memorizzare in strutture java i valori letti.

lo schema del documento xml è il seguente:

Codice PHP:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<
xs:element name="indice">
<
xs:complexType>
<
xs:sequence>
<
xs:element name="tripla" type="triplaType" maxOccurs="unbounded" />
</
xs:sequence>
</
xs:complexType>
</
xs:element>

<
xs:complexType name="triplaType">
<
xs:sequence>
<
xs:element name="termID" type="xs:integer" use="required" maxOccurs="1" />
<
xs:element name="docID" type="xs:integer" use="required" maxOccurs="1" />
<
xs:element name="pos" type="xs:integer" use="optional" minOccurs="0" maxOccurs="1" />
</
xs:sequence>
</
xs:complexType>
</
xs:schema
e un esempio di file xml minimo è:

Codice PHP:
<?xml version="1.0"?>
<indice>
<tripla>
<termID>01</termID>
<docID>10</docID>
<pos>01</pos>
</tripla>
<tripla>
<termID>02</termID>
<docID>12</docID>
<pos>02</pos>
</tripla>
</indice>
ovvero, il file xml conterrà una sequenza (molto lunga) di triple, ognuna delle quali memorizza un "termID", un "docID" e una "pos".

Ho preso come esempio il codice che ha postato l'utente "fegret" nel post
http://forum.html.it/forum/showthrea...&highlight=sax
ed ho semplicemente modificato le righe:

Codice PHP:
if(nodo=="autore"System.out.println(nodo+"-> "+s);
if(
nodo=="titolo"System.out.println(nodo+"-> "+s);
if(
nodo=="costo"System.out.println(nodo+"-> "+s); 
con

Codice PHP:
if(nodo=="termID"System.out.println(nodo+"-> "+s);
if(
nodo=="docID"System.out.println(nodo+"-> "+s);
if(
nodo=="pos"System.out.println(nodo+"-> "+s); 
(ovviamente poi al posto di stampare i valori, andrò a memorizzarli in una struttura).
Funziona tutto, solo che, se uno dei valori termID o docID o pos sono lunghi esattamente 1 carattere, il metodo non funziona.
Avete qualche consiglio da darmi?
Un'altra cosa, se il file xml ha indentazioni allora il metodo non funziona.


p.s. : Secondo voi, per raggiungere il mio obiettivo, sto facendo bene ad usare il codice suddetto, o mi consigliate un altro modo?

Grazie mille in anticipo,
Marcello