首页 > 解决方案 > C# XDocument.Parse - 无效的命名空间声明

问题描述

我在 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 字符串,我看不出它失败的原因有任何问题或差异。

任何帮助将不胜感激。

标签: c#ssis

解决方案


由于上面 Hassan 的建议,我设法解决了这个问题。问题是我有一个带有 csv 源的数据流,最后一列包含一个带有错误信息的 XML 片段。该列中的 xml 命名空间用双引号引起来,这导致了我的解析问题。如果我将双引号换成单引号,我可以解析 XML。

现在的问题是如何在我的 SSIS 包中将双引号换成单引号。也许有人有一个好的建议?

为了暂时解决这个问题,我必须将 XML 片段存储在一个表中并从那里修改它。


推荐阅读