我正在尝试将一组本地包装器类写入我们的机构API(我在一所高等院校工作)。这些类的目的是安全地从远程服务中提取脚本,并允许抽象远离该服务对我们的程序员的工作方式。服务如何运作是保密的,但我需要回答的问题是:
当每个成绩单响应以不同的xml格式呈现时,如何处理此问题,具体取决于它来自哪个学校。有超过30个。
作为一个例子:机构A在根目录附近的文档顶部有一个标签,用于学生的GPA | GPA | 4.0 | / GPA |而另一家机构可能在XML的一个完全不同的部分,靠近底部,也许可能有3个孩子深入,并命名标签| GradePointAverage | 4.0 | / GradePointAverage | (假装|是xml尖括号)
有关如何处理这种标准化不足的建议吗?
答案 0 :(得分:3)
听起来你应该针对一个通用数据模型,然后是30个不同的类,它们能够从XML反序列化到该数据模型。根据它们的具体差异,可能是重用的重要方面,您甚至可以参数化一些差异。使用LINQ to XML可以很容易地解析任何一种格式。
我的目标是使用大量简单的代码而不是少量的“聪明”代码:解析每个单独的格式应该相当简单,并且希望很容易测试。是的,编写此代码会很繁琐,但最终应该很容易理解,如果需要,可以轻松添加更多格式。
当然,您可以使用XSLT将转换转换为单一格式,但我个人更喜欢编写C#:)
这假设您可以创建一个通用数据模型 - 如果格式非常不同,您可能会发现无法准确地表示每个文件中的数据而没有可怕的最低 - 分母。提出一个好的数据模型可能和编写每个解析器一样困难。