2010-10-28 30 views
1

J'ai un schéma avec des attributs suivants dans l'élément de schéma:JAXB en java 6 pas préfixer le préfixe d'espace de nom correct dans le fichier XML Marshalled

<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:abc="http://abc.example.com" targetNamespace="http://abc.example.com" elementFormDefault="qualified" attributeFormDefault="unqualified"> 

je pouvais compiler et obtenir des classes java. En utilisant ces classes, j'ai rempli des données dans un objet et l'ai rassemblé pour obtenir un fichier XML.

Mais les éléments XML dans ce fichier marshalled n'ont pas le préfixe "abc".

J'ai légèrement modifié en utilisant XMLStreamWriter.setPrefix lors du marshalling, et j'ai pu obtenir le fichier XML avec tous les éléments préfixés comme "abc".

Maintenant, lorsque je tente de unmarshall le même fichier XML, il jette une erreur en disant:

[org.xml.sax.SAXParseException: Le préfixe "abc" pour l'élément "abc: Name". Est pas lié]

S'il vous plaît, aidez-moi à faire savoir à JAXB que abc est le préfixe correct.

Merci Vous Pradeep

Répondre

1

Le nom du préfixe est dénué de sens. Tout ce qu'il fait est de faire une connexion entre un espace de noms et les balises qui appartiennent à cet espace de noms. Si le préfixe est abc ou namespace01 ou s'il n'y a pas de préfixe, car l'espace de noms par défaut est utilisé. Autant que je sache, vous ne pouvez pas forcer l'utilisation d'un préfixe ou le nom spécifique d'un préfixe dans JAXB.

+1

grâce musikk, maintenant je le comprends. Mais si nous voulons utiliser notre propre préfixe défini, nous pouvons utiliser JAXB RI qui contient NamespacePrefixMapper avec JAXB de Java 6. [include JAXB RI dans classpath]. marshaller.setProperty ("com.sun.xml.bind.namespacePrefixMapper", nouveau NamespaceMapper()); – pradeep

+1

@pradeep: Nice. Même si vous vous faites dépendre d'une implémentation spécifique, il est bon de savoir. – musiKk

+0

Ne vous mettez pas totalement d'accord sur la partie "insignifiante". Cela peut être "insignifiant" d'un point de vue technique. Mais supposons que par exemple - de quelque façon que ce soit - un humain verra ou travaillera avec le XML, il pourrait être important de pouvoir définir les préfixes de l'espace de noms de manière significative ... – mmey