Convertir XML sous forme de chaîne
-
22-09-2019 - |
Question
J'ai un scénario où je dois en envoyer un xml comme contenu de la balise dans un message de requête SOAP à un webservice par exemple
<arg_1><xml version="1.0" encoding="UTF-8"?><sometag><somemoretag>abcd</somemoretag></sometag></arg_1></code>
Arg_1 se trouve être un paramètre de chaîne à un webservice. Donc je mettre dans une section CDATA pour cette
<arg_1><![CDATA[<xml version="1.0" encoding="UTF-8"?><sometag><somemoretag>abcd</somemoretag></sometag>]]></arg_1>
Mais cela ne cesse de me lancer une exception
org.xml.sax.SAXException: WSWS3084E: Erreur: SimpleDeserializer rencontré un élément enfant, qui ne devrait pas, en quelque chose qu'il essayait de désérialiser. Un message en cours d'analyse:
Je continue à obtenir cette exception. Quelqu'un at-il vu cela auparavant ??
La solution
Il y a deux façons dont vous pouvez gérer cela -
- Retirez le XML Prolog et insérez le document XML d'origine dans le contenu d'un élément dans l'autre document.
<arg_1><sometag><somemoretag>abcd</somemoretag></sometag></arg_1>
- Escape the document XML original comme vous le feriez pour tout autre contenu du texte et insérer le texte résultant dans le contenu d'un élément.
<arg_1><sometag><somemoretag>abcd</somemoretag></sometag></arg_1>
Autres conseils
J'avais fait face à la même question, dans laquelle mon xml n'a pas été à l'intérieur du CDATA correctement. Pour les balises à traiter sous forme de chaîne, vous devez utiliser comme ci-dessous:
<![CDATA[ ---your xml---- ]]>
Cependant, vous n'avez pas utilisé? avant que la version xml. L'étiquette doit être
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Dans votre cas son <xml version="1.0" encoding="UTF-8" standalone="yes"?>
.