WebSphere Message Broker Version 8.0.0.5 Betriebssysteme: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Sehen Sie sich die Informationen zur aktuellen Produktversion im IBM Integration Bus Version 9.0 an.

XMLNSC: Mit CData arbeiten

Mithilfe eines CData-Bereichs kann ein XML-Dokument in ein anderes XML-Dokument eingebettet werden.

Was ist ein CData-Bereich?

Ein XML-Element kann Textinhalt enthalten:
<element>Der Text</element>
Es gibt jedoch einige Zeichen, die in diesem Inhalt nicht verwendet werden dürfen. Dazu gehören insbesondere '<' und '&', da beide ein bestimmte Bedeutung für einen XML-Parser haben. Sind sie im Textinhalt eines Elements enthalten, ändert sich damit die Bedeutung des XML-Dokuments.
Hier ein Beispiel für ein falsch formatiertes XML-Dokument:
<element><Der><Text></element>
Sie haben zwei Möglichkeiten, diese Schreibweise in einem für XML korrekten Format darzustellen:
  1. Verwenden Sie Zeichenelemente:
    <element>&lt;Der&gt;&lt;Text&gt;</element>
  2. Verwenden Sie einen CData-Bereich:
    <element><![CDATA[<Der><Text>]]></element>

Wofür kann ein CData-Bereich verwendet werden?

In einem CData-Bereich können Sie XML-Markup in den Wert eines Elements einfügen. Für XML ungültige Zeichen können allerdings nicht verwendet werden. Auch Binärdaten dürfen nicht in einem CData-Bereich enthalten sein.
CData wird hauptsächlich dazu verwendet, ein XML-Dokument in ein anderes XML-Dokument einzubetten. Beispiel:
<outer>
    <embedXML>
        <![CDATA[<innerMsg></innerMsg>]]>
    </embedXML>
</outer>
Auf diese Weise kann auch ein falsch formatiertes XML-Dokument eingebettet werden, da der XML-Parser den Inhalt eines CData-Bereichs nicht syntaktisch analysiert.
<outer>
    <embedXML>
        <![CDATA[<badXML></wrongClosingTag>]]>
    </embedXML>
</outer>
Folgende Zeichen dürfen nicht in einem CData-Bereich verwendet werden: Verwenden Sie aufgrund dieser Einschränkungen keinen CData-Bereich, um beliebigen Text in Ihr XML-Dokument einzufügen, und versuchen Sie nicht, Binärdaten in einem CData-Bereich aufzubewahren (sofern diese nicht hexBinary- oder base64Binary-codiert sind).

Wie wird ein CData-Bereich zu einer XML-Ausgabenachricht hinzugefügt?

Sehen Sie sich folgende Eingabenachricht an:

 <TestCase>
    <Folder>
       <Field1>Value1</Field1>
       <Field2>Value2</Field2>
       <Field3>Value3</Field3>
    </Folder>
 </TestCase> 
Im folgenden ESQL-Code wird gezeigt, wie eine vollständige Nachricht serialisiert wird:
 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;

In diesem Beispiel wird der Abschnitt 'InputRoot.XMLNSC.TestCase.Folder' der Nachrichtenbaumstruktur serialisiert.

Wenn die Baumstruktur der Ausgabenachricht vor einem MQOutput-Knoten ausgewertet würde, würde Folgendes angezeigt:

(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>'
       )
       )
   )  

Das Beispiel zeigt, dass jeder CData-Bereich einen einzelnen skalaren Wert enthält, bei dem es sich um die Zeichendarstellung des erforderlichen Abschnitts der XML-Nachricht handelt.

Aus dieser Baumstruktur wird folgende XML-Ausgabenachricht erzeugt:

<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> 
Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

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

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:20:29


TaskthemaTaskthema | Version 8.0.0.5 | ac67174_