¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Revertir el escape de caracteres especiales XML usando ABAP: Guía completa para una solución estándar

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

Hola a todos,

Estoy buscando una forma de revertir el escape de caracteres especiales XML usando ABAP. Básicamente, lo que busco es lo contrario de la función ESCAPE. Tengo cadenas de datos que contienen fragmentos XML escapados, como se muestra a continuación. Necesito analizar los caracteres especiales escapados y escribir el resultado en un archivo. La forma trivial sería simplemente hacer un "REPLACE" de los 5 caracteres escapados básicos, pero sé que los estándares son más complicados que eso (por ejemplo, se puede usar " en lugar de " y los caracteres en CDATA no deben ser escapados). Me gustaría que mi solución fuera lo más compatible con los estándares posible. ¿Alguien tiene algún consejo?

Gracias,

Alex

Ejemplo de fragmento escapado:


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

Resultado deseado:

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

4 Respuestas

0
Cargando...

Hola Alex,

Si utilizas los métodos estándar proporcionados por SAP para leer y analizar el archivo XML, esto se hará automáticamente mediante el método. A continuación se muestra un programa de ejemplo. Mi cadena XML de ejemplo tiene un nodo llamado body y tiene un valor con el símbolo > en él, que en forma escapada se ve como &gt; . El programa obtiene correctamente el valor convirtiendo &gt; en el símbolo > y lo muestra después de la ejecución.


    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 del programa:

Gracias,

Juwin

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

Hola Venkat,

Me parece que el código que has publicado reemplazará los caracteres '[!@#$%^&*+-= ]' con espacios. ¿Es correcto? Si es así, definitivamente no es lo que estoy buscando. En mi situación, estoy tratando específicamente con caracteres especiales que fueron escapados para XML (por lo tanto, un conjunto diferente al que has dado). Y en mi caso, ya han sido escapados, así que no quiero reemplazar los caracteres especiales, quiero restaurarlos.

Por favor, echa un vistazo al ejemplo que he dado y avísame si puedes ayudar.

Gracias,

Alex

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

Este mensaje fue moderado.

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

Hi Alex,

If you use standard methods provided by SAP to read & parse the XML file, this will be automatically done by the method. Example program is given below. My example XML string, has a node named body and that has a value with > symbol in it, which in escaped form looks like &gt; . The program correctly gets the value back converting &gt; to > symbol and outputs that after execution.


    

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.

Output from program:

Thanks,

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?