Newsgroup: it.comp.lang.delphi
Titolo: Generazione file XML

Ciao a tutti,
  Scusatemi se vi annoio con questo argomento, ma nella generazione di un 
file xml devo creare questa riga
(in questo formato obbligatorio)
 
                <AIC cod="123456789" lot="1015879" d_scad="99/99/9999" 
qta="1"/>
 
Per creare questa riga uso il seguente codice
 
      XML := NewXMLDocument;
       .
       .
       .
      CurNode:=MovimentoNode.AddChild('AIC');
      CurNode.Attributes['qta']:=SG1.Cells[3,I];
      CurNode.Attributes['d_scad']:=SG1.Cells[5,I];
      CurNode.Attributes['lot']:=SG1.Cells[4,I];
      CurNode.Attributes['cod']:=Code;
 
dove
    XML                         : IXMLDocument;
    MovimentoNode     : IXMLNode;
    CurNode                  : IXMLNode;
 
Non e' una presa in giro .... ma vorrei capire perche' con il codice di cui 
sopra in win 7 ho la riga
cosi' come dev'essere, ma in XP (perche' un paio di macchine hanno ancora 
XP) la riga e' esattamente al
contrario, ovvero
 
               <AIC qta="1" d_scad="99/99/9999" lot="1015879" 
cod="123456789"/>
 
Qualche suggerimento ???
 
Penso ci sia qualche settaggio che mi sto perdendo, nel caso (ma penso sia 
dovuto all'orario) sono
propenso anche ad invertire il codice in caso di necessita'.
 
Grazie a tutti
 
ciao
 
Daniele
 
 
 

 (in questo formato obbligatorio)
 
the order of attribute specifications in a start-tag or empty-element 
tag is not significant
 
http://www.w3.org/TR/REC-xml/#sec-starttags
 
 

Ciao,
 
"theFiller"  ha scritto nel messaggio news:mhberm$6lc$1...@speranza.aioe.org...

Grazie per il link, ma e' significante ...... eccome !
Se gli attributi NON sono in quell'ordine il file viene rigettato con un 
errore che non lascia
dubbi:
 
file non acquisito perché non ha rispettato il formato corretto. Effettuare 
le modifiche del caso e trasmettere nuovamente i dati.
 
So, in this case the order of attribute specifications in a start-tag or 
empty-element tag IS  significant.
 
Grazie per l'interesse.
 
Ciao
 
Daniele 
 

 le modifiche del caso e trasmettere nuovamente i dati.
 
Non vuol dire... potrebbe anche essere che sia il software che legge il
file a pretendere delle condizioni non richieste dal formato XML
stabilito dal w3c.
Se si tratta di un gestionale fatto da una ditta italiana non e'
che riesci a contattarli per avere indicazioni, magari segnalando
che la loro lettura non e' conforme con le specifiche del w3c ?
 
Se proprio non puoi muoverti da quel tracciato, temo che dovrai
trovare un modo di manipolare il file una volta che e' stato
generato da delphi.
 
Potresti riaprire il file come file di testo, caricandolo in una
StringList e poi scorrere la lista alla ricerca di righe con gli
attributi in ordine "sbagliato" rigirarle e poi risalvare tutto.
 
ciao
Giacomo
 

 attributi in ordine "sbagliato" rigirarle e poi risalvare tutto.
 
Il problema, se si puo' definire problema, e che mi ha spinto ad aprire una 
discussione
qui e' soltanto per risolvere questa stranezza.
Invece, dal lato pratico, ho adottato una soluzione disarmante:
Genero il file xml, una volta generato in un memo visualizzo un paio di 
righe e metto la
fatidica domanda: Le righe visualizzate corrispondono a quella proposta?
Se si salvo il file, se no rigenero il file xml con gli attributi invertiti 
!
 
Il fatto che gli standard non vengano seguiti ..... bhe questa e' un'altra 
storia.
 
Grazie per l'interesse
 
ciao
 
Daniele 
 

 storia.
 
gia'... a volte capita di incontrare software fatti "un po' con i piedi"
che non rispettano i formati internazionali: tempo fa ho dovuto
gestire un file XML in cui i nodi non erano case sensitive, quindi mi
trovavo delle cose cosi':
<nodo>testo</Nodo> 
Che ovviamente IXMLDocument si rifiuta di aprire.
Ho chiesto "ma come cavolo avete fatto a produrre questo file, in
teoria non e' un documento XML ben formato nessuna libreria dovrebbe
consentire una roba del genere" La risposta e' stata: "ma noi non
usiamo nessuna libreria, scriviamo sul file direttamente con
delle printf() " 
Roba da "the daily WTF"!!! :-D
 
ciao
Giacomo
 
 
 
 
 

Ciao Giacomo,
  purtroppo l'odissea continua .... le stranezze si moltiplicano !!!
Ora anche su W7 ....
 
Sempre delhi XE 2 e nodo xml generato con il codice in origine (che 
ripropongo per comodita')
 
      CurNode:=MovimentoNode.AddChild('AIC');
      CurNode.Attributes['qta']:=SG1.Cells[3,I];
      CurNode.Attributes['d_scad']:=SG1.Cells[5,I];
      CurNode.Attributes['lot']:=SG1.Cells[4,I];
      CurNode.Attributes['cod']:=Code;
 
che cosa succede ?
 
Un casino !!!!!
 
Genero il file xml e i nodi sono correttamente generati nel formato 
richiesto, infatti salvo il file
lo leggo dentro un TMemo per vedere se il formato e' corretto e se e' 
corretto lo accetto.
 
In effetti il formato del file e' corretto ovvero
<AIC cod="123456789" lot="1015879" d_scad="99/99/9999" qta="1"/>
 
ma (dato che il file e' salvato e' presente sul disco) se apro con explorer 
o notepad il file
le righe che leggo sono in questo formato
<AIC qta="1" d_scad="99/99/9999" lot="1015879" cod="123456789"/>
 
Com'e' possibile che ho due letture diverse sullo stesso file ?
 
Disgraziatamente il formato che accetta il computer remoto e' quello 
visualizzato dal notepad che,
tanto per rendere il problema ancora piu' incomprensibile' su xp da il 
risultato opposto.
 
Ora la domandona .....
Sai come sia possibile creare un xml che sia da notepad / explorer / TMemo 
si leggano nello stesso modo
cosi' da non diventare matti ?
Se il file si visualizza nello stesso modo e ho discrepanze, allora lo 
rigenero al contrario ma nelle
condizioni attuali non ho idea di cosa avvenga.
 
Forse c'e' un settaggio che mi sto perdendo ???
 
Grazie
 
Ciao
 
Daniele