我有一个测试夹具,可以将结果保存在XML文件中。从那里,我可以打开Access数据库,导入文件并将内容附加到预先存在的表。但是,我正试图让这个过程自动化。
到目前为止,在一些教程的帮助下,我已经能够使用C#打开Access数据库文件。我可以读取XML文件,解析数据并将其插入表中,但是,是否有任何函数/文档可以模拟Access中的导入向导,并将XML文件位置作为参数?
这是XML文件的结构:
<root>
<Test1>
<Serial_x0020_Number>SerialNumber</Serial_x0020_Number>
<Date>2015-03-03T07:13:28</Date>
<Voltage1>7.620000</Voltage1>
<Voltage2>7.620000</Voltage2>
<Voltage3>7.620000</Voltage3>
<Voltage4>7.620000</Voltage4>
<Pass>N</Pass>
</Test1>
<Test2>
<Serial_x0020_Number>SerialNumber</Serial_x0020_Number>
<Date>2015-03-03T07:13:28</Date>
<Voltage1>14.000000</Voltage1>
<Voltage2>301.000000</Voltage2>
<Voltage3>251.000000</Voltage3>
<Voltage4>149.000000</Voltage4>
<Voltage5>91.000000</Voltage5>
<Pass>Y</Pass>
</EFT_x0020_Waveform_x0020_Test>
</root>
XML文件可以包含1到150个条目,包含1到12个表,其中每个“Test”对应一个表,测试中的条目对应一列。
我曾经连接数据库的教程:https://www.youtube.com/watch?v=MPBlsJpRFqY
编辑:我最终解析了XML并使用了Tim Morford发布的一些代码。感谢。
答案 0 :(得分:2)
首先,您需要解析XML文档:
XmlDocument xml = new XmlDocument();
xml.LoadXml(sResponse); //Your XML Document
foreach (XmlNode row in xml.ChildNodes) //Loop the child nodes
{
Serial_x0020_Number = row.SelectSingleNode("Serial_x0020_Number").InnerText; //Get value of each node
Date = row.SelectSingleNode("Date").InnerText;
Voltage1 = row.SelectSingleNode("Voltage1").InnerText;
Voltage2 = row.SelectSingleNode("Voltage2").InnerText;
Voltage3 = row.SelectSingleNode("Voltage3").InnerText;
Voltage4 = row.SelectSingleNode("Voltage4").InnerText;
Passed= row.SelectSingleNode("Passed").InnerText;
//Insert command here
string sSQL = "INSERT INTO TABLENAME(SN,Date,Voltage1, Voltage2,Voltage3,Voltage4,Passed) VALUES ('" + Date + "','" + Voltage1+ "','" + Voltage2+ "','" + Voltage3+ "','" + Voltage4+ "','" + PAssed + "');";
//You will have to use a connection string and process the SQL in the typical way you are use to.
}
您还可以看到此链接用于解析XML How does one parse XML files?