2013-02-11 130 views
8

我的XML文件的结构是这样的:循环通过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> 

我希望把所有的数据到数据库使用XmlDocument雇工的记录。

所以我写了这样一个循环:

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 
    } 

AnnualSalaryDaysWorked是整数。

+0

也许您的数据库本来会支持XML,那么您可以将该XML发送到数据库并让它处理细节? – 2013-02-11 05:56:41

+0

我不应该在DataSet中使用ReadXml()。我只能使用XmlDocument。 – sujeesh 2013-02-11 05:58:34

回答

11

尝试:

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

也许会添加一些错误处理 - 以防万一其中一个节点可能不存在... – 2013-02-11 06:04:23

+0

假设答案按照他的xml文档 – 2013-02-11 06:06:01

1

xndNode包含名称,AnnualSalary和DaysWorked字段的雇员对象。这只是将它们转换为SQL语句并将该行插入到数据库中的表中。细节是特定的数据库,但它应该是这样的

insert into employee values (name, annual_salary, days_worked) 

假设员工的名字被键入