2010-01-18 15 views
1

Supposons que je stocke une chaîne XML dans une variableUnmarshalling en mémoire, à partir d'une chaîne XML et son schéma stocké dans une chaîne aussi, possible?

String resp = new String("<?xml version=\"1.0\" encodin..."); 

et la définition du schéma lié à ce XML dans un autre:

String xsd = new String("<xs:schema xmlns="http://schema-..."); 

pensez-vous qu'il existe un moyen de valider et unmarshall ' resp ' en objets (en utilisant JAXB par exemple) ?? Est-ce que quelqu'un déjà essayé ou mis en œuvre avec succès de telles choses ??

En avance, merci beaucoup pour toute suggestion ... Seb

+0

Ce schéma est-il connu avant la compilation? Ou est-il généré/obtenu de manière dynamique? – YuppieNetworking

+0

Je suppose que je serais intéressé par les deux: avoir déjà le fichier jar de toutes les classes compilées provenant de ce protocole, et ne pas connaître ces classes à l'avance (j'essaie de voir si je peux implémenter un client de service web, avec le XSD étant incorporé dans le WSDL). Merci. – Seb

Répondre

2

Vous pouvez utiliser unmarshal(Source source) et setSchema(Schema schema) de la classe unmarshaller. Cela devrait fonctionner:

unmarshaller.setSchema(SchemaFactory.newSchema(new StreamSource(new StringReader(xsd)); 
unmarshaller.unmarshal(new StreamSource(new StringReader(resp)); 
+0

Waow, très intéressant en effet. Je regardais la mauvaise version de Unmarshaller ce matin: http://java.sun.com/webservices/docs/1.6/api/javax/xml/bind/Unmarshaller.html qui n'a pas de méthode setSchema(). – Seb

+0

cela résout mon problème. Merci –