¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Reverter a fuga de caracteres especiais XML usando ABAP: Guia completa para uma solução padrão

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 13 Vistas
0
Cargando...

Olá a todos,

Estou procurando uma maneira de reverter a escape de caracteres especiais XML usando ABAP. Basicamente, o que procuro é o oposto da função ESCAPE. Tenho cadeias de dados que contêm fragmentos XML escapados, como mostrado abaixo. Preciso analisar os caracteres especiais escapados e escrever o resultado em um arquivo. A forma trivial seria simplesmente fazer um "REPLACE" dos 5 caracteres escapados básicos, mas sei que os padrões são mais complicados do que isso (por exemplo, pode-se usar " em vez de " e os caracteres em CDATA não devem ser escapados). Gostaria que minha solução fosse o mais compatível possível com os padrões. Alguém tem algum conselho?

Obrigado,

Alex

Exemplo de fragmento escapado:


<?xml version="1.0" encoding="utf-8"?>

Resultado desejado:

<?xml version="1.0" encoding="utf-8"?>
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Olá Alex,

Se você usar os métodos padrão fornecidos pela SAP para ler e analisar o arquivo XML, isso será feito automaticamente pelo método. Abaixo está um programa de exemplo. Minha string XML de exemplo tem um nó chamado body e tem um valor com o símbolo > nele, que de forma escapada é visto como &gt; . O programa obtém corretamente o valor convertendo &gt; no símbolo > e o exibe após a execução.


††† 1† report xml_parse.

††† 2†

††† 3† data:lv_xml type ref to cl_xml_document,

††† 4†††††† lv_elemnt type ref to if_ixml_element,

††† 5†††††† lv_value type string.

††† 6†

††† 7† create object lv_xml.

††† 8† lv_xml->parse_string( |<?xml version="1.0" encoding="UTF-8"?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>&gt;Don't forget me this weekend!</body></note>| ).

††† 9† lv_elemnt ?= lv_xml->find_node( 'body' ).

†† 10† lv_value = lv_elemnt->get_value( ).

†† 11† write lv_value.

Resultado do programa:

Obrigado,

Juwin

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá, Venkat,

Parece que o código que você publicou substituirá os caracteres '[!@#$%^&*+-= ]' por espaços. Está correto? Se for o caso, definitivamente não é o que estou procurando. Na minha situação, estou lidando especificamente com caracteres especiais que foram escapados para XML (portanto, um conjunto diferente do que você forneceu). E no meu caso, eles já foram escapados, então não quero substituir os caracteres especiais, quero restaurá-los.

Por favor, dê uma olhada no exemplo que forneci e me avise se você pode ajudar.

Obrigado,

Alex

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Esta mensagem foi moderada.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Alex,

Se você usar os métodos padrão fornecidos pela SAP para ler e analisar o arquivo XML, isso será feito automaticamente pelo método. Abaixo está um exemplo de programa. Minha string XML de exemplo tem um nó chamado body e esse tem um valor com o símbolo > nele, que na forma escapada se parece com &gt; . O programa obtém corretamente o valor convertendo &gt; para o símbolo > e o exibe após a execução.


    

1 report xml_parse.

2

3 data:lv_xml type ref to cl_xml_document,

4 lv_elemnt type ref to if_ixml_element,

5 lv_value type string.

6

7 create object lv_xml.

8 lv_xml->parse_string( |<?xml version="1.0" encoding="UTF-8"?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>&gt;Don't forget me this weekend!</body></note>| ).

9 lv_elemnt ?= lv_xml->find_node( 'body' ).

10 lv_value = lv_elemnt->get_value( ).

11 write lv_value.

Saída do programa:

Obrigado,

Juwin

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?