zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C#怎样才能将XML文件导入SQLServer

2023-06-13 09:14:42 时间

:怎样才能将XML文件导入SQLServer2000?
:将XML文件导入SQLServer有若干种方法,这里提供其中的3种:

大容量装载COM接口。如果需要将文档的实体和属性析取到关系表中,最快的方法就是使用SQLServer2000ExtensibleMarkupLanguage3.0ServicePack1(SQLXML3.0SP1)提供的大容量装载COM接口。大容量状态COM接口包含在SQLXML3.0SP1的免费下载中。

textcopy.exe命令行实用工具。如果不希望将文档的实体和属性析取到关系表中,您可以使用textcopy.exe命令行实用工具。Textcopy.exe是将文本和image数据类型从单一服务器行或列移入或移出的优秀工具。

数据转换服务(DTS)。如果XML文档很简单,您可以使用DTS将信息逐行析取到表中。这一方法要求您将XML文件定义为输入数据源,将数据库表定义为输出数据源,并编写ActiveX脚本剖析"<"和">"方式的字符输入,以析取实体、属性及其值。

要导入的Xml文件:

复制代码代码如下:
 
<?xmlversion="1.0"encoding="gb2312"?>
<Tbl_UpdateLogs>
<Table>
<id>32</id>
<title>新增执法机构页面</title>
<content>qqqqqq</content>
<module>组织机构</module>
<updateTime>2009-07-31T00:00:00+08:00</updateTime>
<operator>王永刚</operator>
</Table>
<Table>
<id>33</id>
<title>执法人员资格页面</title>
<content>大幅度放到大幅度放到</content>
<module>组织机构</module>
<updateTime>2009-07-29T00:00:00+08:00</updateTime>
<operator>王永刚</operator>
</Table>
<Table>
<id>34</id>
<title>111111</title>
<content>dfdwdd</content>
<module>qwqwq</module>
<updateTime>2009-07-29T00:00:00+08:00</updateTime>
<operator>wyg</operator>
</Table>
<Table>
<id>35</id>
<title>qq</title>
<content>fjdldldsss</content>
<module>qqqqqqq</module>
<updateTime>2009-07-30T00:00:00+08:00</updateTime>
<operator>wyg</operator>
</Table>
<Table>
<id>36</id>
<title>2009222</title>
<content>ddddd</content>
<module>22</module>
<updateTime>2009-07-31T00:00:00+08:00</updateTime>
<operator>wyg</operator>
</Table>
<Table>
<id>37</id>
<title>1234455</title>
<content>ddddddd</content>
<module>11111</module>
<updateTime>2009-07-31T00:00:00+08:00</updateTime>
<operator>wyg</operator>
</Table>
</Tbl_UpdateLogs>
///<summary>
///读取Xml文件,获得所有节点的Value值
///</summary>
///<paramname="fileName">Xml文件名</param>
///<paramname="filePath">存放的路径</param>
///<paramname="rootName">Xml根节点名称</param>
///<returns></returns>
publicvoidImportXmlFile(stringfileName,stringfilePath,stringrootName)
{
stringloadPath=HttpContext.Current.Server.MapPath(filePath+fileName);
try
{
XmlDocumentxmldoc=newXmlDocument();
xmldoc.Load(loadPath);
//获取根节点<rootName>的所有子节点
XmlNodeListmyNodeList=xmldoc.SelectSingleNode(rootName).ChildNodes;
//遍历<根节点>的所有子节点
foreach(XmlNodemyXmlNodeinmyNodeList)
{
XmlNodeListsubNodeList=myXmlNode.ChildNodes;
UpdateLogsupdateLog=newUpdateLogs();
foreach(XmlNodesubXmlNodeinsubNodeList)
{
switch(subXmlNode.Name)
{
case"id"://节点的名称,加这个条件是因为<!---->这些节点也会被读出来
updateLog.ID=int.Parse(subXmlNode.InnerText.Trim());
break;
case"title":
updateLog.Title=subXmlNode.InnerText.Trim();
break;
case"content":
updateLog.Content=subXmlNode.InnerText.Trim();
break;
case"module":
updateLog.Module=subXmlNode.InnerText.Trim();
break;
case"updateTime":
updateLog.UpdateTime=DateTime.Parse(subXmlNode.InnerText.Trim());
break;
case"operator":
updateLog.Operator=subXmlNode.InnerText.Trim();
break;
default:
break;
}
}
if(isExstsById(updateLog.ID.ToString()))
{
UpdateLog(updateLog);
}
else
{
InsertLog(updateLog);
}
}
File.Delete(loadPath);
BindData();
ClientScript.RegisterStartupScript(typeof(string),"importLog","<script>alert("导入成功!");</script>");
}
catch(Exceptionex)
{
ExceptionManager.Handle(ex);
}
}