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