WebSphere Message Broker, Versión 8.0.0.5 Sistemas operativos: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte la información sobre la última versión del producto en IBM Integration Bus, Versión 9.0

XMLNSC: Cómo trabajar con CData

Se puede utilizar una sección CData para incluir un documento XML en otro documento XML.

¿Qué es una sección CData?

Un elemento XML puede contener contenido de texto:
<element>text content</element>
Sin embargo, algunos caracteres no pueden aparecer en dicho contenido. En especial, '<' y '&' tienen los dos un significado especial para un analizador XML. Si se incluyen en el contenido de texto de un elemento, cambian el significado del documento XML.
Por ejemplo, éste es un documento XML de formato incorrecto:
<element><text><content></element>
Hay dos formas de formatear bien XML:
  1. Utilizar entidades de tipo carácter:
    <element>&lt;text&gt;&lt;content&gt;</element>
  2. Utilizar una sección CData:
    <element><![CDATA[<text><content>]]></element>

¿Para qué sirve una sección CData?

En una sección CData, puede incluir el lenguaje de marcación XML en el valor de un elemento. Pero no se pueden incluir caracteres XML no válidos. Los datos binarios tampoco se pueden incluir en una sección CData.
El uso más habitual de CData es intercalar un documento XML dentro de otro. Por ejemplo:
<outer>
    <embedXML>
        <![CDATA[<innerMsg></innerMsg>]]>
    </embedXML>
</outer>
Puede incluir incluir un documento XML de formato incorrecto de esta manera, porque el analizador XML no intenta analizar el contenido de una sección CData.
<outer>
    <embedXML>
        <![CDATA[<badXML></wrongClosingTag>]]>
    </embedXML>
</outer>
Los elementos siguientes no son válidos en una sección CData: Debido a estas restricciones, no utilice una sección CData para incluir texto arbitrario en el documento XML, y no intente utilizar una sección CData para contener datos binarios (a menos que estén codificados como hexBinary o base64Binary ).

¿Cómo añadir una sección CData a un mensaje XML de salida?

Observe el mensaje de entrada siguiente:

 <TestCase>
    <Folder>
       <Field1>Value1</Field1>
       <Field2>Value2</Field2>
       <Field3>Value3</Field3>
    </Folder>
 </TestCase> 
El ESQL siguiente muestra cómo serializar un mensaje completo:
 DECLARE wholeMsgBlob BLOB
   ASBITSTREAM(InputRoot.XMLNSC,
               InputRoot.Properties.Encoding,
               InputRoot.Properties.CodedCharSetId );
  DECLARE wholeMsgChar CHAR 
   CAST(wholeMsgBlob AS CHAR CCSID InputRoot.Properties.CodedCharSetId);
 SET OutputRoot.XMLNSC.Output.(XMLNSC.CDataField)Field1 = wholeMsgChar;

Este ejemplo serializa la parte InputRoot.XMLNSC.TestCase.Folder del árbol de mensaje.

Si el árbol de mensajes de salida se hubiera examinado antes que un nodo MQOutput, se mostraría:

(0x01000010):XML        = (
  (0x01000000):Output = (
    (0x01000000):Field1 = (
      (0x02000001): = '<TestCase><Folder><Field1>Value1</Field1><Field2>Value2</Field2>
                       <Field3>Value3</Field3></Folder><Folder2><Field1>Value1</Field1>
                       <Field2>Value2</Field2><Field3>Value3</Field3><Folder2></TestCase>'
       )
       )
   )  

Como puede verse, cada sección CData contiene un solo valor escalar que es la representación de carácter de las porciones del mensaje XML que se requieren.

Este árbol produce el siguiente mensaje XML de salida:

<Output>
 <Field1><![CDATA[<TestCase><Folder><Field1>Value 1</Field1>
                                    <Field2>Value 2</Field2>
                                    <Field3>Value 3</Field3></Folder>
                            <Folder2><Field1>Value 1</Field1>
                                     <Field2>Value 2</Field2>
                                     <Field3>Value 3</Field3></Folder2>
                  </TestCase>]]</Field1>
 </Output> 
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Comentarios

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última actualización:
        
        Última actualización: 2015-02-28 16:58:55


Tema de tareaTema de tarea | Versión 8.0.0.5 | ac67174_