【问题标题】:C# XMl Deserialisation with non existing Paths不存在路径的 C# XMl 反序列化
【发布时间】:2013-09-19 14:31:47
【问题描述】:

我已经使用 xsd.exe 为我的 XML 创建了类。在 XML (SEPA camt.053) 中有 minOccurs = 0 的多重嵌套节点。

我像这样导航到节点:

entry.NtryDtls[0].TxDtls[0].RltdPties.CdtrAcct.Id.Item

在此路径 RltdPties 中,CdtrAcct 和 Id 可以为空。

如果 RltdPties 为 null,我会收到异常,因为 CdtrAcct 不存在。

有没有简单的方法不检查每个节点是否为空来获取项目的值? 如果路径不存在,从我可以检查的最后一个节点获取 null (或其他内容)就足够了。

我的想法是用 try/catch 包围这个查询,如果它抛出异常,我可以将变量设置为空字符串左右。

【问题讨论】:

  • NtryDtls?这应该意味着“条目详细信息”吗?我会考虑修改这些变量名,因为我很难阅读,其他人也会。
  • 已经有人在这里回答了,可能会有所帮助:stackoverflow.com/questions/298009/…
  • 节点名称不是我的。它由 iso 20022 / SEPA camt.053 格式定义。但是在使用这个 xml 文件一周后,我看不到这些缩写。感谢您的链接。由于这种深层的 xml 结构,我希望有一种简单的方法。

标签: c# xml xml-deserialization xsd.exe


【解决方案1】:

快速回答是否定的。在对成员调用方法或运算符之前,您必须检查空引用。

【讨论】:

  • 我希望有一种更简单的方法,所以我必须检查这条路径中的每个对象。
猜你喜欢
  • 2019-07-20
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 2012-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多