在SQl Server中粉碎XML

时间:2013-09-23 10:51:46

标签: sql-server xml ssis

我有以下格式的XML文件,

 <?xml version="1.0" encoding="utf-16"?>
   <Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Name xmlns="http://localhost">Reshma</Name>
    <BirthDate xmlns="http://localhost">1988-09-23T00:00:00</BirthDate> 
   </Data>

当我使用XML任务获取名称的单个节点值时,XML Task的屏幕截图如下,

enter image description here

在这次转换之后,我得到了以下格式的Xml数据,

<?xml version="1.0" encoding="utf-8"?><Data><Name>Rahul</Name><BirthDate>1988-09-23T00:00:00</BirthDate></Data>

但是我仍然无法获得Name节点的单节点值, 任何人都可以解释上面究竟发生了什么以及我想要做什么来准确获得单个节点值。 因为,我被严重困扰,任何形式的帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

请尝试以下SQL。

DECLARE @x xml ;

SELECT @x = REPLACE(REPLACE(BulkColumn,CHAR(10),''),CHAR(13),'')
FROM OPENROWSET(BULK 'E:\SQL_Queries\test.xml', SINGLE_NCLOB) AS X

SELECT 
T.c.value('.','nvarchar(50)') AS result
FROM   @x.nodes('//*[local-name()="Data"]/*[local-name() = "Name"]') T(c);
GO