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.

Zugriff auf Attribute und Elemente

Der XMLNS-Parser setzt den Feldtyp für jedes von ihm erstellte Element in der Nachrichtenbaumstruktur.

Der Feldtyp gibt den Typ des XML-Konstrukts an, den das Element darstellt. Auf die vom XMLNS-Parser verwendeten Feldtypen kann mit Konstanten verwiesen werden, deren Namen das Präfix 'XML.' vorangestellt ist. Feldtypkonstanten mit dem Präfix 'XML.' werden nur in Zusammenhang mit den XMLNS- und XML-Parsern verwendet; sie können nicht mit den XMLNSC- oder MRM-Parsern verwendet werden.

  XMLNS-Feldtypkonstante
Tag XML.Element
Attribut
XML.Attribute 
XML.Attr

Bei dieser Verwendung des Feldtyps kann der XMLNS-Parser zwischen einem Element und einem Attribut desselben Namens unterscheiden.

Beispiel-XML

<parent id="12345">
    <id>ABCDE</id>
</parent>

Beispiel-ESQL

SET value = FIELDVALUE(InputRoot.XMLNS.parent.(XML.Element)id)
Ergebnis: Wert ist 'ABCDE'

SET value = FIELDVALUE(InputRoot.XMLNS.parent.(XML.Attr)id)
Ergebnis: Wert ist '12345'

Beispiel für die Verwendung von SELECT für den Zugriff auf mehrere Attribute

In der Beispielnachricht hat das Element 'Title' innerhalb jedes Item-Elements drei Attribute: Category, Form und Edition. Das erste Title-Element enthält beispielsweise Folgendes:
<Title Category="Computer" Form="Paperback" Edition="2">The XML Companion</Title>
Das Element InputRoot.XML.Invoice.Purchases.Item[1].Title hat in der logischen Baumstruktur vier untergeordnete Elemente: 'Category', 'Form', 'Edition' und den Elementwert "The XML Companion".
Wenn Sie auf die Attribute für dieses Element zugreifen möchten, können Sie den folgenden ESQL-Code schreiben. Dieser Codeauszug ruft die Attribute aus der Eingabenachricht ab und erstellt sie als Elemente in der Ausgabenachricht. Der Wert des Elements selbst wird in diesem Beispiel nicht verarbeitet.
-- Cursor auf das erste Element XML.Attribute von Title setzen.
-- Der Stern (*) hinter (XML.Attribute) steht für einen Namen, da dieser möglicherweise nicht bekannt ist  
DECLARE cursor REFERENCE TO InputRoot.XMLNS.Invoice.Purchases.Item[1].Title.(XML.Attribute)*;  
WHILE LASTMOVE(cursor) DO     
-- Ein Feld mit demselben Namen wie XML.Attribute erstellen
-- und dessen Wert auf den von XML.Attribute setzen                                             
  SET OutputRoot.XML.Data.Attributes.{FIELDNAME(cursor)} = FIELDVALUE(cursor);  
-- Weiter mit dem nächsten gleichgeordneten Element desselben Typs (TYPE), um den        
-- Wert 'Title' zu vermeiden, der kein XML.Attribute ist                                                 
  MOVE cursor NEXTSIBLING REPEAT TYPE; 
END WHILE;
Wenn dieser ESQL-Code vom Compute-Knoten verarbeitet wird, wird die folgende Ausgabenachricht generiert:
<Data>
  <Attributes>
    <Category>Computer</Category>
    <Form>Paperback</Form>
    <Edition>2</Edition>
  </Attributes>
</Data>
Sie können auch eine SELECT-Anweisung verwenden:
SET OutputRoot.XMLNS.Data.Attributes[] =
  (SELECT FIELDVALUE(I.Title)                           AS title,
          FIELDVALUE(I.Title.(XML.Attribute)Category)   AS category,
          FIELDVALUE(I.Title.(XML.Attribute)Form)       AS form,
          FIELDVALUE(I.Title.(XML.Attribute)Edition)    AS edition
     FROM InputRoot.XML.Invoice.Purchases.Item[] AS I); 
Mit dieser Anweisung wird folgende Ausgabenachricht generiert:
<Data>
  <Attributes>
    <title>The XML Companion</title>
    <category>Computer</category>
    <form>Paperback</form>
    <edition>2</edition>
  </Attributes>
  <Attributes>
    <title>A Complete Guide to DB2 Universal Database</title>
    <category>Computer</category>
    <form>Paperback</form>
    <edition>2</edition>
  </Attributes>
  <Attributes>
    <title>JAVA 2 Developers Handbook</title>
    <category>Computer</category>
    <form>Hardcover</form>
    <edition>0</edition>
  </Attributes>
</Data>
Sie können SELECT mit einer WHERE-Anweisung näher qualifizieren, um die Ergebnisse zu reduzieren und dieselbe Ausgabenachricht zu erhalten wie diejenige, die von der WHILE-Anweisung generiert wird. Dieses zweite Beispiel zeigt, dass Sie dieselben Ergebnisse mit weniger und nicht ganz so komplexem ESQL-Code erreichen können.
SET OutputRoot.XMLNS.Data.Attributes[] =
  (SELECT FIELDVALUE(I.Title.(XML.Attribute)Category)   AS category,
          FIELDVALUE(I.Title.(XML.Attribute)Form)       AS form,
          FIELDVALUE(I.Title.(XML.Attribute)Edition)    AS edition
     FROM InputRoot.XML.Invoice.Purchases.Item[] AS I)
     WHERE I.Title = 'The XML Companion'); 
Mit dieser Anweisung wird folgende Ausgabenachricht generiert:
<Data>
  <Attributes>
    <Category>Computer</Category>
    <Form>Paperback</Form>
    <Edition>2</Edition>
  </Attributes>
  </Data>
Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

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

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


KonzeptthemaKonzeptthema | Version 8.0.0.5 | ac67241_