J'ai un service Web et un client qui transmettent des chaînes contenant des références de caractères telles que & # 26; (0x1A). Ceux-ci sont invalides dans XML 1.0 mais valides dans XML 1.1. L'analyseur XML d'Axis lance des exceptions à cause de ces références de caractères. Existe-t-il un moyen de forcer à analyser la réponse en tant que XML 1.1, ou d'insérer la déclaration XML? (Il n'y en a actuellement pas.) J'ai cherché à utiliser des gestionnaires, mais je crois comprendre qu'ils sont invoqués après que le XML a déjà été analysé.Utilisation de XML 1.1 dans Axis2
Répondre
Passez-vous un InputStream
ou Reader
? Si oui, vous pouvez envelopper la source dans une autre classe (comme BufferedReader
fonctionne) mais l'utiliser pour supprimer les caractères inutiles.
Je pense que vous allez avoir du mal avec ça. Ma compréhension est que la norme WSDL 2.0 est basée sur XML 1.0. Alors quel type de service appelez-vous qui se décrit avec WSDL (en supposant XML 1.0) et commence alors à vous envoyer des messages avec des caractères XML 1.1 dedans? Lorsque vous définissez un service Axis2, vous pouvez définir les gestionnaires dont il dispose dans le fichier services.xml. Par exemple sur this page ils ont un service qui a utilisé le org.apache.axis2.receivers.RawXMLINOutMessageReceiver ... Je sais que ce n'est pas ce que vous essayez de faire mais c'est peut-être un endroit pour commencer à regarder ou à penser.
Il y a toute une pile de problèmes. Fondamentalement, il se résume au fait que MS Word "Smart Quotes" et EBCDIC ne se mélangent pas. * shudder * Ce n'est pas censé renvoyer des caractères 0x1A, mais c'est le cas. Nous devrions être en mesure de gérer cela plus gracieusement en ayant juste un personnage drôle plutôt que de mourir entièrement. –