Разобрать SAP idoc в объект Java
Я пытаюсь проанализировать XML-строку SAP idoc в объект Java. Я попытался использовать артефакт com.sap.conn.idoc.sapidoc3 в своем проекте Maven. Я считаю, что у него есть все нужные инструменты для анализа XML-файла, но при этом я также хочу добавить репозиторий / место назначения в мой код. Также мне нужно добавить материал в мой classpath, который я хотел бы избежать. Идентификаторы будут отправлены мне без использования каких-либо соединений SAP, поэтому мне нужен только IDocXMLParser.
Простое создание реализации IDocXMLParser не сработает, потому что есть проверки, что репозиторий не является нулевым, и каждый конструктор защищен.
Есть ли способ просто разобрать / распаковать полученную строку XML без необходимости писать всю логику самостоятельно?
1 ответ
Пожалуйста, посмотрите мой ответ здесь:
Анализ IDoc в формате XML с использованием библиотеки классов SAP Java IDoc?
Я думаю, что это должно ответить и на ваш вопрос. Если у вас нет какого-либо RFC-соединения с сервером приложений SAP с вашим программным обеспечением, я могу только отговорить вас использовать SAP JCo и надстройку Java IDoc Class Library. Они не дают никакой выгоды в этом случае.
Синтаксический анализ IDoc-XML не имеет смысла, поэтому он зависит от цели, которую вы ставите перед этим анализом. Если вы хотите только убедиться, что XML корректен и корректен, вы можете использовать для этого любой стандартный анализатор XML. Любой другой синтаксический анализатор XML также создал бы некоторые объекты Java - по крайней мере java.lang.String
объекты. Но если вы хотите получить объекты Java типа com.sap.conn.idoc.IDocDocument
поскольку впоследствии вы намереваетесь использовать предлагаемые им удобные методы навигации, средства доступа или модификаторы, парсер IDoc-XML должен иметь доступ к дополнительным метаданным IDoc (которые сам IDoc-XML не предоставляет) для создания этих типов объекты.
Если вы намереваетесь проверить IDoc-XML не только на предмет правильности и корректности XML, но также и в том случае, если он дополнительно соответствует спецификации SAPIDoc-XML, я боюсь, что SAP Java IDoc Class Library IDocXMLProcessor
и IDocXMLParser не может быть использован для такой отдельной задачи, и в этом случае вам действительно нужно написать свой собственный синтаксический анализатор.
Кстати, вы также можете взглянуть на SAP Business Connector, который предлагает соответствующие API для работы с IDoc и IDoc-XML. Конечно, это платформа интеграции для обмена бизнес-данными между различными системами, и нет библиотеки разработки для включения в собственные проекты приложений Java. Но я думаю, что можно легко разработать рабочие процессы, которые бы охватывали желаемую функциональность из вашего вопроса. Я не знаю, будет ли это соответствовать вашим общим требованиям проекта, так что это просто еще одна идея - идти по другому пути.