在 SSIS 脚本任务中从 COM 对象 XML 结果集访问 属性
Accessing property from COM object XML Result Set in SSIS Script Task
我正在使用提供的 SSIS 包。大部头书。我需要从 SSIS 变量中提取 XML 数据,但找不到方法。
当我在脚本任务运行时遇到断点时,我可以将鼠标悬停在变量的值 属性 上。这向我展示了一个 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 对象以获取其属性
(获取属性())。 COM 对象不支持这个,所以我回来了
一个 0 长度的数组
将结果集从 XML 更改为 DataSet 并填充 DataTable
目的。我找回了一个包含一列和多行
的 DataTable
"System.Byte[]",一文不值
None这些东西都成功了。
好吧,看来我过早放弃使用 "dynamic"。
确保添加对 "Microsoft.CSharp" 的引用,然后执行类似于以下代码的操作:
var data = Dts.Variables["User::MyVariableName"]; //Assuming not null.
var comObject = ((dynamic)data.value);
var propertyValue = comObject.PropertyYouNeed;
确保您从 COM 对象中检索的 属性 拼写正确。直到 运行 时间才会发现拼写错误。
我正在使用提供的 SSIS 包。大部头书。我需要从 SSIS 变量中提取 XML 数据,但找不到方法。
当我在脚本任务运行时遇到断点时,我可以将鼠标悬停在变量的值 属性 上。这向我展示了一个 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 对象以获取其属性
(获取属性())。 COM 对象不支持这个,所以我回来了 一个 0 长度的数组将结果集从 XML 更改为 DataSet 并填充 DataTable
目的。我找回了一个包含一列和多行
的 DataTable "System.Byte[]",一文不值
None这些东西都成功了。
好吧,看来我过早放弃使用 "dynamic"。
确保添加对 "Microsoft.CSharp" 的引用,然后执行类似于以下代码的操作:
var data = Dts.Variables["User::MyVariableName"]; //Assuming not null.
var comObject = ((dynamic)data.value);
var propertyValue = comObject.PropertyYouNeed;
确保您从 COM 对象中检索的 属性 拼写正确。直到 运行 时间才会发现拼写错误。