将内部数据元素映射到外部供应商的XML模式
我正在考虑使用Altova MapForce(或者类似的东西)来生成XSLT和/或者Java或者Cclass来进行翻译。今天,我们直接从数据库中提取数据,并手动构建一个XML字符串,并将其发布到Web服务。
应该是db->(内部)XML-> XSLT->(外部)XML吗?你们在广阔的世界中做什么?
解决方案
回答
我将使用现成的XML序列化类之一来进行内部XML生成,然后使用XSLT转换为外部XML。我们可能还生成了一个架构,以强制翻译代码(无论驱动XSLT翻译的是什么)继续获取期望的XML,以防对象的更改导致事情中断。
市场上有许多XSLT编辑器可以完成映射,但是我更喜欢仅使用常规XML编辑器。
回答
是的,我认为我们正在使用MapForce走上正确的道路。如果我们不想编写代码来执行实际的转换,MapForce也可以为我们执行此操作。从长远来看,这可能更好,因为维护代码更少。
除非我们确实需要B2B集成和编排,否则请避免使用更昂贵的选择(例如BizTalk)。
回答
我们正在使用什么数据库? Oracle有一些不错的XML映射工具。有一些Java绑定工具(一个是http://java.sun.com/developer/technicalArticles/WebServices/jaxb)。但是,如果我们比较奢侈,请考虑使用Ruby,它具有不错的内置" to_xml"方法。
回答
提示1:避免全部使用XSLT。
工具支架很烂。最终的解决方案将无法维护。
提示2:消除所有不必要的步骤。
只需将结果集(假设我们使用的是JDBC或者等效)转换为出站XML。
提示3:假定所有基于模式的工具的使用都是不正确的,并进行相应的计划。
换句话说,只是伪造它。如果我们必须喷出一些突变的SOAP(我知道是冗余的)有效负载,只需模拟工作的SOAP消息,然后将其转换为模板即可。速度不烂。
也就是说,最好/正确的答案是使用" XML Writer"样式的解决方案。有几个。
最好的就是我写的LOX(XML的轻量级对象)。
公用API使用Builder设计模式。由于一些不可思议的作用,因此无法创建格式错误的XML。
请注意:如果使用XML作为答案,则说明我们输入了错误的问题。有时,我们被迫违背以某种方式使用它的意愿。发生这种情况时,至关重要的是使用能够最大程度减少开发人员工作量并提高代码可维护性的工具。