.net 使用SQLXML批量加载到数据库时解析XML数据

.net 使用SQLXML批量加载到数据库时解析XML数据,.net,xml,sql-server-2008-r2,xml-parsing,sqlxml,.net,Xml,Sql Server 2008 R2,Xml Parsing,Sqlxml,我有一个XML文件,我想使用.NET将其加载到关系数据库SQL Server 2008 R2中。我可以选择任何框架。我知道最简单的方法是通过 使用批量加载器,可以将XML数据从单个元素解析为多个列 例如,假设: <vuln:product>cpe:/a:magpierss:7.1</vuln:product> XML是否可以被解析,这样Magpierrs会在一个数据库表列中结束,而7.1会在另一列中结束 其次,某些元素有一组有限的值枚举 比如说 <favorit

我有一个XML文件,我想使用.NET将其加载到关系数据库SQL Server 2008 R2中。我可以选择任何框架。我知道最简单的方法是通过

使用批量加载器,可以将XML数据从单个元素解析为多个列

例如,假设:

<vuln:product>cpe:/a:magpierss:7.1</vuln:product> 
XML是否可以被解析,这样Magpierrs会在一个数据库表列中结束,而7.1会在另一列中结束

其次,某些元素有一组有限的值枚举

比如说

<favoriteColor>red</favoriteColor>
<favoriteColor>blue</favoriteColor>
我想用我在另一个数据库表中定义的枚举值替换上述元素数据,即红色->0、蓝色->1或绿色->2。而不是反复加载实际字符串值


使用SQLXML批量加载程序是否可以实现这两种功能之一?如果没有,我的选项是什么?

您可以使用SQL server XML解析

DECLARE @MyXML XML
SET @MyXML = '<SampleXML>
 <favoriteColor>
     <favoriteColor>red</favoriteColor>
     <favoriteColor>blue</favoriteColor>
<favoriteColor/>
</SampleXML>'

SELECT
a.b.value(‘favoriteColor[1]/favoriteColor[1]’,‘varchar(10)’) AS Color1,
a.b.value(‘favoriteColor[1]/favoriteColor[1]’,‘varchar(10)’) AS Color2
FROM @MyXML.nodes(‘SampleXML’) a(b)
链接: