Um corpo XML válido pode escapar de caracteres para os '<' e '' 'em torno dos nomes de elementos
-
22-09-2019 - |
Pergunta
Meu serviço da web está recebendo XML de terceiros que se parecem com o seguinte:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<Foo>bar</Foo>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Meu serviço da web JAXWS rejeita isso com um erro de análise. Além disso, se eu tentar validar esse XML usando o SOAPUI, ele diz que o corpo com o tipo de conteúdo somente elemento não pode ter elemento de texto.
Minha pergunta é: isso é válido XML? Ou o cliente deve me enviar algo sem escapar do <e>.
Quaisquer referências aos padrões ou regras XML são apreciadas.
Solução
Bem, isso certamente é XML válido. No entanto, sua pergunta parece ser se ela está em conformidade com o protocolo SOAP, que é uma questão mais restritiva.
No exemplo, seu corpo de sabão é apenas um elemento de texto. Não sou especialista em sabão, mas em todos os exemplos de sabão que vejo, existem nós de elementos no corpo e não apenas texto. Também a recomendação de sabão (http://www.w3.org/tr/2000/note-soap-20000508) diz
"Uma entrada corporal é identificada pelo seu nome de elemento totalmente qualificado"
o que sugere um requisito para elementos e não o texto.
Outras dicas
Como alternativa, você pode escapar da string completa, envolvendo -a com a seção CDATA (Dados do caractere). Uma seção CDATA começa com o delimitador de nove caracteres! [CDATA [e termina com o delimitador]]:
<![CDATA["Me, Myself & <I>"]]>
Dê uma olhada aqui http://xmmssc-www.star.le.ac.uk/sas/xmmsas_20070308_1802/doc/param/node24.html