我正在尝试将 SAP IDoc XML 字符串解析为 Java 对象。我尝试在我的 Maven 项目中使用 com.sap.conn.idoc.sapidoc3 工件。我相信它确实拥有解析 XML 文件的所有正确工具,但这也希望我向我的代码添加存储库/目标。另外,我需要将一些我想避免的东西添加到我的类路径中。 IDoc 将在不使用任何 SAP 连接的情况下发送给我,因此我实际上只需要 IDocXMLParser。
仅仅创建 IDocXMLParser 实现是行不通的,因为需要检查存储库不为空并且每个构造函数都受到保护。
有没有一种方法可以只解析/解码接收到的 XML 字符串,而不必自己编写所有逻辑?
最佳答案
请您看一下我的回答:
Parsing an IDoc in XML format using SAP Java IDoc Class Library ?
我认为这也应该回答你的问题。 如果您的软件没有与 SAP 应用程序服务器的任何 RFC 连接,我只能劝阻您使用 SAP JCo以及 Java IDoc 类库附加组件。在这种情况下,它们不会提供任何好处。
为了解析而进行 IDoc-XML 解析没有意义,因此这取决于您进行此解析的目标。如果您只想确保 XML 有效且格式良好,则可以使用任何标准 XML 解析器。任何其他 XML 解析器也会创建一些 Java 对象 - 至少是 java.lang.String
对象。但是,如果您希望获取 com.sap.conn.idoc.IDocDocument
类型的 Java 对象,因为您打算随后使用其提供的便捷导航、访问器或修饰符方法,则 IDoc-XML 解析器需要访问其他 IDoc 元数据(IDoc-XML 本身不提供)来创建这些类型的对象。
如果您的目的不仅是检查 IDoc-XML 的 XML 有效性和格式良好性,而且还要检查它是否另外符合 SAP 的 IDoc-XML 规范,那么恐怕 SAP Java IDoc 类库的 IDocXMLProcessor
和 IDocXMLParser 无法用于此类单独的任务,在这种情况下,您确实必须编写自己的解析器。
顺便说一句,您也可以看看 SAP Business Connector它提供了适当的 API 来处理 IDoc 和 IDoc-XML。当然,这是一个用于在各个系统之间交换业务数据的集成平台,并没有包含在自己的Java应用程序项目中的开发库。但我认为,人们可以轻松地在那里开发工作流程,这将涵盖您的问题所需的功能。我不知道它是否适合您的一般项目要求,所以这只是遵循不同路径的另一个想法。
关于java - 将 SAP IDoc 解析为 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53205676/