【发布时间】:2017-09-20 01:24:36
【问题描述】:
我通过调用另一个 .net 应用程序来取回我收到的整合产品 xml。 Xml 包含各种子产品的数据,如 P1、P2、P3 等。我需要编写一个 C# 程序来解析 xml,然后将其分解为三个单独的 xmls..即每个子产品 P1、P2、P3....等一个。每个子产品解析xml的业务规则(或标准)不同。
将来,输入 xml 还可能包含新的附加子产品 P4、P5 等的信息。 所以我还需要把这个 xml 分解成那些新的子产品。
从模块设计的角度来看,子产品类型及其解析标准应该是可扩展和可配置的。这样当需要处理新的子产品时,只需要更改配置,无需更改代码必填。
所以我在想下面的方法。听起来够好吗?
1.在数据库中添加一个名为T的新查找表。
2.添加3列:Id(int)、Sub-ProductName(varchar)、Criteria(varchar)
3.要在数据库中配置一个子产品,比如P1,该行可能如下所示:
1--P1--ProductType='XYZ'|ProductCategory='ABC'|
2--P2--....
3--P3--...
这里,ProductType 和 ProductCategory 是输入 xml 中的有效元素名称。
4.然后在C#程序中,使用反射处理Criterion列值,并对输入的xml应用规则,得到对应子产品名称的xml,即P1..
谢谢。
【问题讨论】:
-
我喜欢通过设计数据库架构来开始一个项目。拥有一个好的数据库总是让其余的编码变得更容易。我还喜欢使用 c# 中的数据表作为数据库和其余 c# 代码之间的主要接口。从数据表中,您可以轻松地将结果显示到 DGV。也使用数据表 Read/WriteXml() 方法将数据读/写到 xml 文件。如果 WriteXml 数据表方法当前不相同,我还将更改当前 xml 文件的结构以匹配。如果您的方法是一样的,但我认为它接近我的。