2013-02-11 20 views
8

La mia struttura file XML è simile al seguente:Looping attraverso documento XML

<SalaryDetails> 
    <Employee> 
     <Name>George Dsouza</Name> 
     <AnnualSalary>320000</AnnualSalary> 
     <DaysWorked>22</DaysWorked> 
    </Employee> 
    <Employee> 
     <Name>Jackie Parera</Name> 
     <AnnualSalary>300000</AnnualSalary> 
     <DaysWorked>19</DaysWorked> 
    </Employee> 
... 
</SalaryDetails> 

voglio mettere tutti i dati nel database come record Employe utilizzando XmlDocument.

così ho scritto un ciclo come questo:

XmlDocument xdcDocument = new XmlDocument(); 

xdcDocument.Load(@"D:\SalaryDetails.xml"); 

XmlElement xelRoot = xdcDocument.DocumentElement; 
XmlNodeList xnlNodes = xelRoot.SelectNodes("/SalaryDetails/Employee"); 

foreach(XmlNode xndNode in xnlNodes) 
    { 
     //What to write here?? 
     //My sql insert command will go here 
    } 

AnnualSalary e DaysWorked sono numeri interi.

+0

Forse il database supporta XML in modo nativo, quindi è sufficiente inviare tale XML al database e lasciare che gestisca i dettagli? –

+0

Non dovrei usare ReadXml() in DataSet. Posso usare solo XmlDocument. – sujeesh

risposta

11

prova:

foreach (XmlNode xndNode in xnlNodes) 
{ 
    string name= xndNode ["Name"].InnerText; 
    string AnnualSalary= xndNode ["AnnualSalary"].InnerText; 
    string DaysWorked= xndNode ["DaysWorked"].InnerText; 

//Your sql insert command will go here; 
} 
+0

Forse aggiungere un po 'di gestione degli errori - nel caso in cui uno dei nodi potrebbe non esistere ... –

+0

Supponendo risposta come da suo doc xml –

1

xndNode contiene un oggetto dipendente con i campi Name, AnnualSalary e DaysWorked. Si tratta solo di convertirli in una statistica SQL e di inserire la riga in una tabella nel database. I dettagli sarebbero database specifico, ma dovrebbe essere qualcosa di simile

insert into employee values (name, annual_salary, days_worked) 

Supponendo che i dipendenti sono calettati per nome

Problemi correlati