WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

XMLNSC: Trabalhando com CData

Uma seção CData pode ser usada para integrar um documento XML a outro documento XML.

O que é uma seção CData?

Um elemento XML pode conter conteúdo de texto:
<element>text content</element>
No entanto, alguns caracteres não pode aparecer nesse conteúdo. Especificamente, '<' e '&' têm significado especial para um analisador XML. Se forem incluídos no conteúdo de texto de um elemento, eles alteram o significado do documento XML.
Por exemplo, este é um documento XML formado incorretamente:
<element><text><content></element>
Há duas maneiras de deixar o XMl bem formado:
  1. Utilize entidades de caracteres:
    <element>&lt;text&gt;&lt;content&gt;</element>
  2. Utilize uma seção CData:
    <element><![CDATA[<text><content>]]></element>

Para o que uma seção CData pode ser utilizada?

Em uma seção CData, é possível incluir marcação XML no valor de um elemento. No entanto, caracteres XML inválidos não podem ser incluídos. Dados binários também não podem ser incluídos em uma seção CData.
O uso mais comum para CData é incorporar um documento XML em outro: Por Exemplo:
<outer>
    <embedXML>
        <![CDATA[<innerMsg></innerMsg>]]>
    </embedXML>
</outer>
É possível até incorporar um documento XML mal formado dessa forma, pois o analisador XML não tenta analisar o conteúdo de uma seção CData.
<outer>
    <embedXML>
        <![CDATA[<badXML></wrongClosingTag>]]>
    </embedXML>
</outer>
Os itens a seguir não são válidos em uma seção CData: Devido a estas restrições, não utilize uma seção CData para incluir texto arbitrário em seu documento XML e não tente utilizar uma seção CData para conter dados binários (a menos que eles estejam codificados como hexBinary ou base64Binary).

Como você inclui uma seção CData em uma mensagem XML de saída?

Considere a seguinte mensagem de entrada:

 <TestCase>
    <Folder>
       <Field1>Value1</Field1>
       <Field2>Value2</Field2>
       <Field3>Value3</Field3>
    </Folder>
 </TestCase> 
A ESQL a seguir mostra como serializar uma mensagem inteira:
 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 exemplo serializa a parte InputRoot.XMLNSC.TestCase.Folder da árvore de mensagens.

Se a árvore de mensagens de saída foi examinada antes de um nó MQOutput, isto mostraria:

(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 pode ser visto, cada seção CData contém um único valor escalar que é a representação de caractere da parte da mensagem XML que é necessária.

Esta árvore produz a seguinte mensagem de saída XML:

<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 | Downloads | Biblioteca | Suporte | Feedback

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

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:28:54


Tópico de TarefaTópico de Tarefa | Versão 8.0.0.5 | ac67174_