ColdFusion - Leer contenido de CDATA de xml

 
Vista:

Leer contenido de CDATA de xml

Publicado por Cynthia (6 intervenciones) el 02/02/2011 14:13:26
Quisiera saber de manera urgente como leer de un xml que viene con la siguiente estructura:
<content>
<![CDATA[
<persona>
<nombre></nombre>
<identif></identif>
</persona> ]]>
</content>


Como se ve en el xml, todo el contenido de un xml viene dentro de un CDATA....Para obtener el xml interno del CDATA y procesarlo......Funcionaria asi????

<cffunction name="funcionPersona" access="remote" output="true" returntype="xml">
<cfargument name="xmlContent" type="String" required="yes">

<cfset xmlRecibido = XMLParse(xmlContent)
<cfset nombre=xmlRecibido.persona.nombre.xmlText>

</cffunction>


Agradezco de antemano su ayuda urgente....

Saludos,
Cynthia
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Lectura de XML dentro de CDATA

Publicado por Alejandro (108 intervenciones) el 14/09/2023 20:28:10
Para leer el XML dentro de un elemento CDATA en ColdFusion, puedes hacerlo de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<cffunction name="funcionPersona" access="remote" output="true" returntype="struct">
    <cfargument name="xmlContent" type="String" required="yes">
 
    <!-- Obtener el contenido dentro de CDATA -->
    <cfset contenidoCDATA = REReplace(xmlContent, "<!\[CDATA\[(.*?)\]\]>", "\1")>
 
    <!-- Parsear el contenido dentro de CDATA como XML -->
    <cfset xmlRecibido = XMLParse(contenidoCDATA)>
 
    <!-- Extraer la información deseada -->
    <cfset nombre = xmlRecibido.persona.nombre.xmlText>
 
    <!-- Crear una estructura de resultados -->
    <cfset resultado = {
        "nombre": nombre
    }>
 
    <cfreturn resultado>
</cffunction>

En este código, primero extraemos el contenido dentro del CDATA utilizando una expresión regular. Luego, parseamos ese contenido como XML y extraemos la información que deseas. Finalmente, creamos una estructura de resultados que contiene el nombre y la devolvemos.

Nota: Asegúrate de que el XML real dentro del CDATA tenga la misma estructura que has proporcionado en tu ejemplo. Si hay alguna diferencia en la estructura real, debes ajustar el código en consecuencia. Además, ten en cuenta que este ejemplo asume que solo hay un elemento `<persona>` dentro del CDATA. Si hay múltiples elementos `<persona>`, deberás adaptar el código para manejarlos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar