c# - 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 字符串,我看不出它失败的原因有任何问题或差异。
任何帮助将不胜感激。
解决方案
由于上面 Hassan 的建议,我设法解决了这个问题。问题是我有一个带有 csv 源的数据流,最后一列包含一个带有错误信息的 XML 片段。该列中的 xml 命名空间用双引号引起来,这导致了我的解析问题。如果我将双引号换成单引号,我可以解析 XML。
现在的问题是如何在我的 SSIS 包中将双引号换成单引号。也许有人有一个好的建议?
为了暂时解决这个问题,我必须将 XML 片段存储在一个表中并从那里修改它。
推荐阅读
- android - Pdf 有时无法在 Android 上使用 google 嵌入式查看器加载
- android - 在android studio中安装Mapbox的问题
- java - IPAddress 在 LAN 网络和 ZONG 4G 上返回不同
- entity-framework - 在 EF Code First Orderby 函数期间无法将类型“System.Int32”转换为类型“System.Object”
- javascript - 成功登录 Firebase 后,Google Apps 脚本重定向到 HTML 文件
- python - 将文件中的连续三列读入数组
- android - 如何将用户名列表中的唯一用户名提供给firebase中的用户
- css - Chrome 开发工具没有突出显示整个身体?
- java - Gradle 没有使用 Java 9+ 正确设置 Eclipse 的 .classpath
- typescript - 打字稿:如何将项目添加到元组?