我在SSIS脚本转换组件内部使用的某些C#代码中收到无效的名称空间声明错误,这使我感到困惑。代码如下:
string xml = Row.RejectReason;
XDocument xDoc = XDocument.Parse(xml);
XNamespace tns = "http://sbr.gov.au/comn/event.02.data";
在SSIS中使用上述代码时,在尝试解析XML时会出错(可能是由于空白),但是如果我在控制台应用程序中使用相同的代码,它将可以正常工作。唯一的区别是我如何声明xml字符串的值:
string xml = @"<tns:Event xmlns:tns=""http://sbr.gov.au/comn/event.02.data""><tns:MaximumSeverity.Code>Error</tns:MaximumSeverity.Code><tns:EventItems><tns:EventItem><tns:Error.Code>MAAS.SUBMIT.REQ.UNAUTHORISEDABN</tns:Error.Code><tns:Severity.Code>Error</tns:Severity.Code><tns:Short.Description>Short desc</tns:Short.Description><tns:Detailed.Description>Detailed desc</tns:Detailed.Description><tns:Parameters></tns:Parameters></tns:EventItem></tns:EventItems></tns:Event>";
我已经检查了它试图传递的XML字符串,但看不到任何有关失败原因的问题。
任何帮助将不胜感激。
答案 0 :(得分:1)
由于上述哈桑的建议,我设法解决了这个问题。问题是我有一个带csv源的数据流,最后一列包含带有错误信息的XML代码段。该列中的xml名称空间用双引号引起来,这引起了我的解析问题。如果我将双引号替换为单引号,则可以解析XML。
现在的问题是如何在SSIS包中将双引号替换为单引号。也许有人有很好的建议?
现在要解决这个问题,我必须将XML片段存储在一个表中,然后从那里进行修改。
答案 1 :(得分:1)