Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SSIS XML源令牌元素截断错误_Sql Server_Xml_Ssis_Xsd - Fatal编程技术网

Sql server SSIS XML源令牌元素截断错误

Sql server SSIS XML源令牌元素截断错误,sql-server,xml,ssis,xsd,Sql Server,Xml,Ssis,Xsd,我从需要在SSIS中处理的XML中粘贴了以下XML元素: <Contact> <Mail>testmail@testtesttestte.com

我从需要在SSIS中处理的XML中粘贴了以下XML元素:

<Contact>
  <Mail>testmail@testtesttestte.com                                                                                                                                                                                                                                    </Mail>
</Contact>
此XML for Mail元素的下划线XSD架构为:

            <xs:element name="Mail">
            <xs:annotation>
                <xs:documentation>e-mail address</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:maxLength value="250"/>
                    <xs:minLength value="1"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:element>
当SSIS包尝试处理此XML时,会出现一个错误,即超出了此元素的最大大小。这是因为Mail元素有255个带空格的字符。 根据这一点:每组连续的空格被压缩成一个空格字符,所有的前导空格和尾随空格都被删除


我怎样才能让SSI意识到这一点而不给出错误并能够处理XML?

我不知道如何让SSI做您想要做的事情,但如果您想尝试,我可以提供一种解决方法:使用执行SQL任务,将XML作为varchar变量传递到任务中,在SQL中将其转换为XML,然后手动替换邮件元素文本,删除空格,并将其传递回包变量。下面是一些示例T-SQL,您可以将其粘贴到ManagementStudio中,看看它是如何工作的

DECLARE @mail VARCHAR(255), @xml XML = 
'<Contact>
  <Mail>testmail@testtesttestte.com                                                                                                                                                                                                                                    </Mail>
</Contact>';

SELECT  @mail = RTRIM(a.n.value('Mail[1]','varchar(max)'))
FROM    @xml.nodes('/Contact') AS a(n);

SET @xml.modify('replace value of (/Contact/Mail/text())[1] with sql:variable("@mail")')

SELECT @xml;

谢谢你的回答。我想使用SSI的原因不是为了修改或处理XML,因为我需要处理的XML是10GB+。我希望SSI能够完全读取并能够像XSD中描述的那样解析XML,但显然它不处理令牌类型元素。