我正在考虑使用Altova MapForce(或类似的东西)来生成XSLT和/或Java或C#类来进行翻译。今天,我们将数据从数据库中提取出来并手动构建我们发布到Web服务的XML字符串。
应该是db - > (内部)XML - > XSLT - > (外部)XML?你们在广阔的世界里做了什么?
答案 0 :(得分:3)
我会使用一个开箱即用的XML序列化类来进行内部XML生成,然后使用XSLT转换为外部XML。您也可以生成一个模式,以强制执行转换代码(无论什么驱动您的XSLT转换)继续获取转换期望的XML,以防对象发生变化。
市场上有许多XSLT编辑器可以帮助您进行映射,但我更喜欢使用常规的XML编辑器。
答案 1 :(得分:1)
是的,我认为你正在使用MapForce走上正确的道路。如果您不想编写代码来执行实际转换,MapForce也可以为您执行此操作。这可能是更好的长期b / c,维护的代码更少。
避免使用更昂贵的选项(例如BizTalk),除非您确实需要B2B集成和编排。
答案 2 :(得分:0)
您使用的数据库是什么? Oracle有一些很好的XML映射工具。有一些Java绑定工具(一个是http://java.sun.com/developer/technicalArticles/WebServices/jaxb)。但是,如果你有luxory考虑使用Ruby,它有很好的内置“to_xml”方法。
答案 3 :(得分:0)
提示#1:避免全部使用XSLT。
工具支持很糟糕。由此产生的解决方案将无法维护。
提示#2:消除所有不必要的步骤。
只需将结果集(假设您使用JDBC或者等效)转换为出站XML。
提示#3:假设所有使用基于架构的工具都不正确并做出相应的计划。
换句话说,就是伪造它。如果你必须喷出一些突变SOAP(冗余,我知道)有效负载,只需模拟一个工作的SOAP消息,然后将其转换为模板。速度不吸吮。
那就是说,最好/正确的答案是使用“XML Writer”风格的解决方案。有几个。
最好的是我写的那个,LOX (Lightweight Objects for XML)。
公共API使用Builder设计模式。由于引擎盖下的一些魔力,不可能创建格式错误的XML。
请注意:如果XML是答案,那么您就提出了错误的问题。有时,我们被迫违背我们的意愿以某种方式使用它。当发生这种情况时,使用最小化开发人员工作并提高代码可维护性的工具至关重要。