从SSIS中的XML Source中的变量读取Xml文件

时间:2013-09-27 06:45:03

标签: xml xslt ssis dataflowtask

我通过Web服务任务获取结果变量,如下图所示,

enter image description here

然后我使用XML任务删除多余的命名空间并将处理后的结果存储在strProcessedResult变量中的另一个变量中,如下图所示,

enter image description here

此处第二个操作数是我的 data.xslt 文件,它有助于从我的XML文件中删除额外的命名空间,

以下是我的控制流程的整个结构,

enter image description here

在数据流中,我使用XML源读取我的变量并将数据输入数据库,下面是XML Source的截图,

enter image description here

这里,由于XML源无法读取数据且XMLDataVariable为空,因此我给出了错误,我想读取节点值并使用OLEDB Destination将数据插入数据库,

如果不是将Web服务任务的结果保存到变量中,而是将其保存在外部的XML文件中,那么下面将是我的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">Rahul</Name>
  <BirthDate xmlns="http://localhost">1991-04-20T00:00:00</BirthDate>
 </Data>.

在应用XSLT规则删除多余的命名空间后,我的XML文件将如下所示,

<?xml version="1.0" encoding="utf-8"?><Data><Name>Rahul</Name><BirthDate>1991-04-20T00:00:00</BirthDate></Data>

请注意,我必须强制添加XSLT规则以删除额外的命名空间,否则它不会创建XSD以进行进一步操作,而且我的项目也能很好地工作如果我将结果存储在外部的XML文件中但我想制作使用变量进行整个操作,

1 个答案:

答案 0 :(得分:0)

确保在设计时确实在strProcessedResult变量中包含某些内容。我的意思是:当你运行你的包时,它将加载变量,但在设计时你的变量将是空的,所以粘贴你期望的XML,只是为了给任务一些东西来处理。