Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过C#将XML文件导入Access数据库?_C#_Xml_Ms Access - Fatal编程技术网

如何通过C#将XML文件导入Access数据库?

如何通过C#将XML文件导入Access数据库?,c#,xml,ms-access,C#,Xml,Ms Access,我有一个测试夹具,它将结果保存在XML文件中。从那里,我可以打开一个Access数据库,导入文件并将内容附加到预先存在的表中。然而,我正在努力使这个过程自动化 到目前为止,在一些教程的帮助下,我已经能够使用C#打开Access数据库文件。我可以读取XML文件、解析数据并将其插入表中,但是,是否有任何函数/文档可以模拟Access中的导入向导,并将XML文件位置作为参数 这是XML文件的结构: <root> <Test1> <Serial_x0020_Nu

我有一个测试夹具,它将结果保存在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>

序列号
2015-03-03T07:13:28
7.620000
7.620000
7.620000
7.620000
N
序列号
2015-03-03T07:13:28
14
301
251
149
91
Y
XML文件可以有1到150个条目和1到12个表,其中每个“测试”对应一个表,测试中的条目对应一列

我用来连接数据库的教程:


编辑:我最终解析了XML并使用了Tim Morford发布的一些代码。谢谢。

首先需要解析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的链接

首先尝试解析您的XML文件。实现这一点有多种方法。快速的谷歌搜索会给你一些选择。在Access中有没有函数/文档可以模拟导入向导,并以XML文件位置为参数?我不知道这个问题的答案。将xml解析为C#并没有那么难。更正:在.net中解析xml很难,但这是了解它的一个好方法:)可能重复“你在寻找这种类型的答案吗?”这句话会分散注意力。根据投票和评论,你会知道的。另外,对你的代码的任何解释也会改进你的答案。ryanyuyu我是新来这个网站的,只是想帮助Kilovolt,我不知道什么会让你分心。你能帮助我很好。看起来您编辑了答案并对其进行了改进。这一努力表明你将很容易融入SO社区。