我正在使用已提供的SSIS包。对我来说。我需要从SSIS变量中提取XML数据,但我找不到办法。
当我在脚本任务中运行时遇到断点时,我可以将鼠标悬停在变量的Value属性上。这显示了一个COM对象。当我展开COM对象以查看其属性时,我在名为" xml"的属性中看到了我需要的XML数据。我如何从代码中获取此属性?
var xmldata = Dts.Variables["User::MyVariableName"].Value;
//xmldata is a COM object with no properties available at design time
以下是我的尝试:
根据我在网上看到的示例将值写入文件。 这只是写" System .__ ComObject"到文件
将COM对象转换为MarshalByRefObject。这没有给我 不再有用于检索属性的选项
将COM对象设置为" dynamic"变量。这给了我一个 编译时错误
反映COM对象以获取其属性
(的GetProperties())。 COM对象不支持这个,所以我回来了
一个0长度数组
将结果集从XML更改为DataSet并填充DataTable
宾语。我收到了一个包含一列和多行
的DataTable
" System.Byte []",这是毫无价值的。
这些都没有成功。
答案 0 :(得分:0)
好吧,看起来我放弃了使用"动态"太早了。
确保添加对" Microsoft.CSharp"的引用,然后执行以下代码:
var data = Dts.Variables["User::MyVariableName"]; //Assuming not null.
var comObject = ((dynamic)data.value);
var propertyValue = comObject.PropertyYouNeed;
确保从COM对象检索的属性拼写正确。拼写错误在运行时才会被捕获。