Анализ .NET DataSet, возвращенного из .NET Web Service в Java

Я должен использовать веб-сервис .NET из приложения Java. Совместимость между ними обычно очень хорошая. Проблема, с которой я сталкиваюсь, заключается в том, что разработчик приложений .NET решил предоставлять данные с помощью объекта .NET DataSet. Есть много статей, написанных о том, почему вы не должны делать это и как это затрудняет взаимодействие:

http://www.hanselman.com/blog/ReturningDataSetsFromWebServicesIsTheSpawnOfSatanAndRepresentsAllThatIsTrulyEvilInTheWorld.aspxhttp://www.lhotka.net/weblog/ThoughtsOnPassingDataSetObjectsViaWebServices.aspxhttp://aspnet.4guysfromrolla.com/articles/051805-1.aspxhttp://www.theserverside.net/tt/articles/showarticle.tss?id=Top5WSMistakes

Моя проблема в том, что, несмотря на то, что это не рекомендуемая практика, я застрял с необходимостью использовать веб-сервис, возвращающий DataSet с Java. Когда вы генерируете прокси для чего-то подобного с чем-то кроме .NET, вы в основном получаете объект, который выглядит так:

    @XmlElement(namespace = "http://www.w3.org/2001/XMLSchema", required = true)
    protected Schema schema;
    @XmlAnyElement(lax = true)
    protected Object any;

Это первое поле является фактической схемой, которая должна описывать DataSet. Когда я обрабатываю это, используя JAX-WS и JAXB в Java, он представляет всю XS-схему как объекты Java, которые будут представлены здесь. Ходить по дереву объектов JAXB возможно, но не красиво. Любое поле представляет необработанный XML для DataSet, который находится в схеме, указанной схемой.

Структура набора данных довольно непротиворечива, но типы данных меняются. Мне нужен доступ к информации о типе, и схема меняется от звонка к звонку. У меня есть несколько вариантов, но ни один из них не кажется «хорошим».

Попытка сгенерировать объекты Java из схемы с использованием JAXB во время выполнения кажется плохой идеей. Это будет слишком медленно, так как это должно происходить каждый раз.Брутфорс просматривает дерево схемы, используя объекты JAXB, которые принес JAX-WS.Возможно, вместо использования JAXB для разбора схемы было бы проще работать с ней как с XML и использовать XPath, чтобы попытаться найти нужную мне информацию о типе.

Есть ли другие варианты, которые я не рассматривал? Существует ли библиотека Java для простого анализа объектов DataSet? Что сделали другие люди, у которых могут быть подобные ситуации?

Ответы на вопрос(3)

Ваш ответ на вопрос