2013-02-11 13 views
8

Moja struktura pliku XML wygląda następująco:Przelotowe dokumentu 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> 

chcę umieścić wszystkie dane w bazie danych jako rekordy employé korzystających XmlDocument.

Więc napisałem pętlę tak:

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 i DaysWorked są liczbami całkowitymi.

+0

Może twoja baza danych będzie obsługiwać XML natywnie, więc możesz po prostu wysłać ten XML do bazy danych i pozwolić mu obsługiwać szczegóły? –

+0

Nie powinienem używać ReadXml() w DataSet. Mogę używać tylko XmlDocument. – sujeesh

Odpowiedz

11

try:

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

Może dodać trochę obsługi błędów - na wypadek, gdyby jeden z węzłów mógł nie istnieć ... –

+0

Zakładając odpowiedź zgodnie z jego dokumentem xml –

1

xndNode zawiera obiekt pracownika z polami Name, AnnualSalary i DaysWorked. To tylko kwestia zamiany ich na instrukcję SQL i wstawienia wiersza do tabeli w bazie danych. Dane byłyby specyficzne dla bazy danych, ale powinno być coś takiego

insert into employee values (name, annual_salary, days_worked) 

Zakładając pracowników są oznaczone wg nazwy