【发布时间】:2012-04-16 18:34:59
【问题描述】:
我已经派生了一个类,该类将采用 XML 文件并动态生成 ExpandoObject,以便利用 ExpandoObjects 列表和递归为传入的 XML 动态生成 ExpandoObject。
将其传回以进行处理以检索数据有效,但我从遗留系统检索的 XML 不一致。我可以这样取回单个节点
<test>
<insured>
<a>BLAH BLAH BLAH</a>
<b>BLAH BLAH BLAH</b>
<c>BLAH BLAH BLAH</c>
</insured>
</test>
或
<test>
<insured>
<a>BLAH BLAH BLAH</a>
<b>BLAH BLAH BLAH</b>
<c>BLAH BLAH BLAH</c>
</insured>
<insured>
<a>BLAH BLAH BLAH</a>
<b>BLAH BLAH BLAH</b>
<c>BLAH BLAH BLAH</c>
</insured>
<insured>
<a>BLAH BLAH BLAH</a>
<b>BLAH BLAH BLAH</b>
<c>BLAH BLAH BLAH</c>
</insured>
</test>
所以对于“被保险人”的关键,我要么得到ExpandoObject 要么得到List<ExpandoObject>。我正在尝试确定最简单的解决方案来确定返回的类型。
理想情况下,就像x.insured.OfType<List<ExpandoObject>>() 返回一个布尔值或类似性质的东西。
干杯
【问题讨论】:
-
你为什么不让它总是给你一个
List<ExpandoObject>- 如果只有一个条目,只是一个单值列表? -
在尝试使此代码尽可能可重用和动态化时,我觉得这会使事情变得复杂,因为这不会发生。我上面给出的示例 XML 并没有反映真实来源的复杂性。
-
这就是没有给出代表性例子的问题:) 但我认为呈现一个 simple 模型,其中引用子元素名称总是得到一个 sequence匹配次数是最一致的方法。
-
感谢乔恩的反馈。进一步考虑这一点并与同事交谈,我认为这将是最简单的解决方案,只是在实施时需要牢记。干杯。
标签: c# .net xml expandoobject