我使用SSIS 2012 Web服务任务调用Web服务。 HTTP调用返回的XML非常类似于:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<GetFooResponse xmlns="http://acme1234">
<GetFooResult>
<Foo FOOTYPE_CODE="2" FOOTYPE="Premium" FOO_CODE="11" FOONAME="example" ACTIVE_INACTIVE="A"/>
<Foo FOOTYPE_CODE="1" FOOTYPE="Standard" FOO_CODE="12" FOONAME="example2" ACTIVE_INACTIVE="A"/>
</GetFooResult>
</GetFooResponse>
</s:Body>
</s:Envelope>
但是当我将结果XML存储在磁盘上的变量或文件中后在SSIS中调试时,我看到存储的XML是:
<?xml version="1.0" encoding="utf-16"?>
<GetFooResponse xmlns="http://acme1234">
<Foo FOOTYPE_CODE="2" FOOTYPE="Premium" FOO_CODE="11" FOONAME="example" ACTIVE_INACTIVE="A"/>
<Foo FOOTYPE_CODE="1" FOOTYPE="Standard" FOO_CODE="12" FOONAME="example2" ACTIVE_INACTIVE="A"/>
</GetFooResponse>
我真的不知道如何做到这一点 - SSIS如何剥离中间节点?我很好地剥离外部SOAP元素,但是哪里做了GetFooResult go?结果,我的XSD不再正确;除非我手动捏造XSD,否则我无法获得可用的SSIS包。
我是如何解决此问题的,以便SSIS Web服务任务产生与从Web服务任务检索的XML相同的XML?