2010-08-08 7 views
0

Je viens de terminer une application pour importer un fichier de données XML assez simple dans un db. L'application fonctionne bien, mais j'aimerais savoir comment je devrais gérer un mauvais fichier XML. Par exemple, l'utilisateur sélectionne un fichier XML dont la mise en page est différente de celle requise pour mon application. Finalement, j'aimerais aussi ajouter la possibilité de sélectionner plusieurs fichiers à importer et préférer juste alerter l'utilisateur lorsqu'un fichier mal formé est rencontré plutôt que de lancer une exception.Comment gérer les fichiers XML malformés pendant le processus d'importation?

Des suggestions?

Merci!

Edit: fichier XML exemple ...

<export-database name="/data/data/dump.db"> 
<table name="gpsPoints"> 
    <row> 
     <col name="_id">0</col> 
     <col name="latitude">0000000000</col> 
     <col name="longitude">0000000000</col> 
     <col name="rssi">-00</col> 
     <col name="logdate">00 000 00 00:00:00</col> 
     <col name="mcc">000</col> 
     <col name="mnc">000</col> 
     <col name="lac">00</col> 
     <col name="cellid">000</col> 
     <col name="site_lat">0</col> 
     <col name="site_lng">0</col> 
     <col name="tech">0000000000</col> 
     <col name="ber">-000</col> 
     <col name="callstate">0000000000/col> 
     <col name="roaming">0000000000</col> 
    </row> 
</table> 
</export-database> 

Répondre

5

qui sonne comme une chose simple try-catch me ... non? Les choses ont tendance à se compliquer quand la structure n'est pas le problème, mais les données fournies sont fausses d'une certaine manière et vous avez besoin de pouvoir "rejeter" des enregistrements/nœuds spécifiques, mais cela ne ressemble pas à votre cas. Il peut également être utile de savoir exactement comment vous lisez le code XML (c'est-à-dire DOM, la sérialisation XML, XML Linq).

+0

envelopper Ainsi, le code de la méthode de lecture (s) dans un try-catch? – DenaliHardtail

+0

Bien sûr. Une chose que vous voulez probablement est de donner à l'utilisateur plus de détails là où votre erreur est due à un code XML mal formé ou à cause des mauvaises données qu'il contient. L'exception que vous attrapez doit contenir des détails sur l'ancien, et c'est à vous de gérer le dernier. –

2

Utilisez un simple try/catch, en analysant le fichier XML et en vérifiant s'il est valide, cela demandera probablement plus d'efforts pour écrire et prendra plus de temps à traiter.

Si vous peuplez un ensemble de données par exemple, le code ressemblerait à ceci

try { 
    DataSet ds = new DataSet(); 
    ds.LoadXml("myfile.xml"); 
} 
catch { 
    ErrorLabel.Text = "Your XML isn't valid"; 
} 
Questions connexes