1

我正在尝试将一组本地包装类编写到我们的机构 API 中(我在一所高等教育机构工作)。这些类的目的是安全地从远程服务中提取脚本,并允许抽象从该服务如何工作到我们的程序员。该服务的工作方式是保密的,但我也需要回答的问题是:

当每个成绩单响应以不同的 xml 格式出现时,如何处理这个问题,具体取决于它来自哪所学校。有30多个。

例如:机构 A 在靠近根的文档顶部有一个标签,学生的 GPA 为 |GPA|4.0|/GPA| 而另一个机构可能将它放在 XML 的完全不同的部分,靠近底部,可能有 3 个孩子深,并将标签命名为 |GradePointAverage|4.0|/GradePointAverage| (假装|是xml尖括号)

有什么建议可以解决这种缺乏标准化的问题吗?

4

1 回答 1

3

听起来您应该针对一种通用数据模型,然后是 30 个能够从 XML 反序列化到该数据模型的不同类。根据它们的不同之处,可能存在重用的重要方面,您甚至可以参数化一些差异。使用 LINQ to XML 可以相当容易地解析任何一种格式。

我的目标是大量简单的代码而不是少量的“聪明”代码:解析每种单独的格式应该相当简单,并且希望易于测试。是的,编写这段代码会很乏味,但最终应该很容易理解,并且如果需要,可以轻松添加更多格式。

当然,您可以使用 XSLT 执行转换为单一格式,但我个人更愿意编写 C# :)

这假设您可以创建一个通用数据模型 - 如果格式非常不同,您可能会发现如果没有可怕的最低公分母,就无法准确表示每个文件中的数据。想出一个好的数据模型可能和编写每个单独的解析器一样困难。

于 2012-10-25T16:13:00.143 回答