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:
e un esempio di file xml minimo è: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>
ovvero, il file xml conterrà una sequenza (molto lunga) di triple, ognuna delle quali memorizza un "termID", un "docID" e una "pos".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>
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:
conCodice 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);
(ovviamente poi al posto di stampare i valori, andrò a memorizzarli in una struttura).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);
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

Rispondi quotando
