L'analyse d'une .NET DataSet retourné à partir de un .NET Web Service en Java

J'ai à en consommer .NET hébergé service web à partir d'une application Java. L'interopérabilité entre les deux est généralement très bonne. Le problème, je suis en cours d'exécution en est que l' .NET développeur de l'application a choisi d'exposer les données à l'aide de l' .NET objet DataSet. Il y a beaucoup d'articles écrits pour expliquer pourquoi vous ne devriez pas faire cela et comment il rend l'interopérabilité difficile:

Mon problème est que, malgré ce qui n'est pas recommandé en pratique, je suis coincé avec le devoir de consommer un service web retournant un ensemble de données avec Java. Lorsque vous générez un proxy pour quelque chose comme ça avec autre chose que de l' .NET en gros, vous avez jusqu'à la fin avec un objet qui ressemble à ceci:

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

Ce premier champ est le schéma qui doit décrire le jeu de données. Quand j'ai ce processus à l'aide de JAX-WS et JAXB en Java, il mettre tous XS-Schéma comme des objets Java à être représentés ici. La marche de l'arbre des objets de JAXB est possible, mais pas assez. Le tout terrain, représente le XML brut pour le jeu de données dans le schéma spécifié par le schéma.

La structure de la base de données est assez cohérente, mais les types de données changent. J'ai besoin d'accéder à l'information concernant le type et le schéma n'varier d'un appel à l'autre. J'ai bien quelques options, mais aucune ne semble comme 'bon' options.

  • En essayant de générer des objets Java à partir du schéma à l'aide de JAXB au moment de l'exécution semble être une mauvaise idée. Ce serait beaucoup trop lent, car il devra arriver à chaque fois.
  • La force Brute qui marche le schéma de l'arbre à l'aide de la JAXB objets que JAX-WS apporté.
  • Peut-être au lieu d'utiliser JAXB pour analyser le schéma, il serait plus facile de le traiter comme XML et l'utilisation de XPath pour essayer de trouver le type d'information dont j'ai besoin.

Existe-il d'autres options que je n'ai pas pris en compte? Est-il une bibliothèque Java pour analyser des objets DataSet facilement? Ce qu'ont d'autres personnes fait qui peut avoir des situations similaires?

InformationsquelleAutor Chris Dail | 2010-04-19