我正在尝试将SAP idoc XML字符串解析为Java对象。我尝试在我的Maven项目中使用com.sap.conn.idoc.sapidoc3工件。我相信它确实具有解析XML文件的所有正确工具,但这也希望我在代码中添加一个存储库/目标。另外,我需要添加一些我想避免的东西到我的类路径中。 idocs将不使用任何SAP连接而发送给我,因此我实际上只需要IDocXMLParser。
仅创建IDocXMLParser实现将不起作用,因为存在对存储库的检查不为null且每个构造函数都受到保护的情况。
有没有一种方法可以解析/解组接收到的XML字符串而不必自己编写所有逻辑?
答案 0 :(得分:0)
请您在这里查看我的答案:
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类库的{{1} }和IDocXMLParser不能用于这种单独的任务,在这种情况下,您确实必须编写自己的解析器。
顺便说一句,您还可以看看SAP Business Connector,它提供了用于处理IDoc和IDoc-XML的适当API。当然,这是一个用于在各种系统之间交换业务数据的集成平台,并且没有开发库包含在自己的Java应用程序项目中。但是,我认为可以轻松地在那里开发工作流程,这些工作流程将涵盖您问题中所需的功能。我不知道它是否适合您的一般项目要求,所以这只是走不同道路的另一种想法。