Devo sviluppare un'applicazione c # in grado di leggere file xml di grandi dimensioni. I file XML contengono dati sui sistemi informatici (ad esempio informazioni su hardware, software, rete, bios). Ci sarà un file xml separato per ogni categoria, ad esempio file xml hardware, file xml software. Un id del computer è un attributo comune in tutti questi file xml. Potrebbe essere possibile che un ID computer sia presente in un file xml ma non in un altro. Dopo aver eseguito la parte di lettura e aver memorizzato i dati localmente, deve essere scritto in diversi csv i.e Hardware.csv, software.csv. Devono essere scritti solo quegli id che sono presenti in tutti i file xml. Sto pensando all'approccio in basso per farlo,
1) Leggi ogni file xml, memorizza il suo id del computer nella struttura dei dati come Dizionario (con la chiave essendo il suo id del computer e il valore è Arraylist >). Ogni oggetto avrà attributi associati. Ad esempio - Hardware xml verrà letto e memorizzato nel dizionario come < 1, hwarraylist & gt ;. Ogni oggetto hw avrà attributi come hwmodel, hwmanufacturer ecc.
2) Durante la lettura del secondo file xml, il file xml del software, se l'ID esiste già nel dizionario, un swarraylist verrà aggiunto al suo valore. Altrimenti viene aggiunto un nuovo computerid al dizionario.
3) Dopo aver terminato tutte le letture, scriverò un array di solo id che hanno numero di arraylist = numero di file xml. Csv separato per l'arraylist separato.
Questo approccio è corretto? Sarà fattibile per milioni di righe in ogni file xml?
Un'altra cosa da aggiungere, il file xml è conforme al seguente formato:
<result_sets>
<result_set>
<cs>
<c>
<wh>123</wh>
<dn>Computer ID</dn>
<rt>1</rt>
</c>
<c>
<wh>112</wh>
<dn>Name</dn>
<rt>1</rt>
</c>
<c>
<wh>124</wh>
<dn>System</dn>
<rt>1</rt>
</c>
</cs>
<rs>
<r>
<id>8820</id>
<cid>230</cid>
<c>
<v>230</v>
</c>
<c>
<v>Windows</v>
</c>
<c>
<v>system32</v>
</c>
</r>
</rs>
È possibile analizzarli usando XMLReader o dovrei trattare come file di testo e fare l'elaborazione. Si prega di avvisare