Ho un formato di file legacy che sto convertendo in XML per l'elaborazione. La struttura può essere riassunta come:LXML - Ordine tag di ordinamento
<A>
<A01>X</A01>
<A02>Y</A02>
<A03>Z</A03>
</A>
La parte numerica dei tag può andare da 01 a 99 e ci possono essere lacune. Come parte dell'elaborazione, alcuni record potrebbero aver aggiunto tag aggiuntivi. Una volta completata l'elaborazione, sto riconvertendo il file al formato precedente eseguendo iterwalking dell'albero. I file sono ragionevolmente grandi (~ 150.000 nodi).
Un problema con questo è che alcuni software che utilizzano il formato legacy presuppongono che i tag (o piuttosto i campi al momento della conversione) saranno in ordine alfanumerico, ma per impostazione predefinita i nuovi tag verranno aggiunti alla fine di il ramo che poi li fa uscire dall'iteratore nell'ordine sbagliato.
Posso usare xpath per trovare il fratello precedente basato sul nome del tag ogni volta che vengo ad aggiungere un nuovo tag, ma la mia domanda è se c'è un modo più semplice per ordinare l'albero immediatamente prima dell'esportazione?
Edit:
credo di aver sintetizzato sopra la struttura.
Un record può contenere diversi livelli come descritto in precedenza per dare qualcosa di simile:
<X>
<X01>1</X01>
<X02>2</X02>
<X03>3</X03>
<A>
<A01>X</A01>
<A02>Y</A02>
<A03>Z</A03>
</A>
<B>
<B01>Z</B02>
<B02>X</B02>
<B03>C</B03>
</B>
</X>
io non sono così sicuro lo schema XML è molto ben pensato. Non sono A01 e A02 lo stesso tipo di cose? Dovrebbero condividere lo stesso nome di elemento. Il numero dovrebbe forse essere un attributo, non parte del nome del tag. Inoltre, i nomi dei tag dovrebbero essere più leggibili di quello, ovviamente, ma mi rendo conto che potrebbero essere solo un esempio. –
Purtroppo non ho il controllo del formato precedente e questa è una traduzione diretta di come memorizza i dati in coppie chiave/valore. Nel file originale potrebbe dire "A01 = Bob" e le applicazioni quindi sapranno che il numero contiene il nome. – George
Ci sono molti modi per implementarlo in XML, ma quello che hai mostrato qui non è una traduzione semantica. Il tuo schema sarebbe complicato e in continua evoluzione. Vorrei suggerire '- valore
' dove item è la cosa che rappresenta A01, A02. –