我们正在重构一个使用XML文件来定义对象的各种属性的代码。让我们称这个对象为Report。有不同的报告,如年度,季度等,其他报告取决于客户。有数百个这样的报道。
目前,我们使用JAXB读取这些XML文件并将其转换为Report对象并进行处理。代码中有很多if和else参与,因为根据XML中设置的属性需要实现相应的行为。
我想知道在新代码中实现这一点的最佳方式是什么。注意,我无法修改XML文件。
答案 0 :(得分:1)
听起来你需要解耦。 即将报表对象拆分为报表描述,基本上是解析的xml,然后有一组使用它的类。
所以你可以在reportdescription上有一个返回报告对象集合的方法 egreportheader,reportbody和reportfooter,
然后reportbody.items将返回组。 报告组返回groupheader体页脚等
仍有尽可能多的ifs,但它会更清洁。
PS如果当前的xml将受益于结构/格式的改变,xsl转换不应该是一个重要的开销,并且可能只是代码的显着简单。