In diesem Abschnitt wird der EGL-Datensatz beschrieben, der einer Extensible Markup Language-Zeichenfolge (XML) entspricht. Weitere Abschnitte beschreiben die Funktionen serviceLib.convertFromXML und serviceLib.convertToXML, die von Rich UI-Entwicklern verwendet werden, um XML-Daten in eine Variable oder aus einer Variablen zu konvertieren, was unter Umständen erforderlich ist, um auf einen REST-Service anderer Anbieter zugreifen zu können.
Sie können einen EGL-Datensatzabschnitt (Record) definieren, der als Basis für einen Datensatz (oder eine Feldgruppe aus Datensätzen) dient, der zur Verarbeitung einer XML-Zeichenfolge verwendet wird. Der Datensatzabschnitt umfasst Details, die in einem XML-Schema vorliegen - einer Sprache für die Validierung von XML-Zeichenfolgen.
Wenn Sie die Funktion XMLLib.convertToXML verwenden, schreiben Sie den Inhalt des EGL-Datensatzes in eine XML-Zeichenfolge. Wenn Sie die Funktion XMLLib.convertFromXML verwenden, schreiben Sie die XML-Zeichenfolge in einen EGL-Datensatz. Wenn die Zeichenfolge eine im Datensatz angegebene Validierungsregel nicht erfüllt, gibt die EGL-Laufzeit eine Laufzeitausnahmebedingung (RuntimeException) aus.
<Employee>
<EmpNo>10</EmpNo>
<Name>Smith</Name>
</Employee>
Record Employee {XMLStructure = xmlStructureKind.sequence}
EmpNo INT;
Name STRING;
end
In den meisten Fällen enthält der Datensatzabschnitt eine Gruppe von Feldnamen, die jeweils (nach Zeichen und Groß-/Kleinschreibung) dem Namen eines Elements oder Attributs in der XML-Zeichenfolge entsprechen. Wenn die Namen nicht übereinstimmen, können Sie EGL-Eigenschaften verwenden, um den entsprechenden Namen des XML-Elements bzw. -Attributs anzugeben.
Bitte beachten Sie diese zweifache Verwendung: zum einen für die XML-Zeichenfolgezuordnung, zum anderen für die Validierung.
<Sample color="green"></Sample>
Record root
Sample Sample? {@XMLElement {nillable = true}};
end
Record Sample {@XMlStructure = xmlStructureKind.simpleContent}
color STRING {@XMLAttribute{}};
value STRING;
end
<root><Sample color="green"></Sample></root>
<root><Sample xsi:nil="true></Sample></root>
<Employee>
<EmpNo department="Sales">10</EmpNo>
<Name>Smith</Name>
</Employee>
Record Employee{XMLStructure = xmlStructureKind.sequence}
EmpNo EmpNumber;
LastName STRING;
end
Record EmpNumber {XMLStructure = xmlStructureKind.simpleContent}
department STRING {@XMLAttribute{}};
value INT;
end
Felder des Typs ANY werden nicht unterstützt.
Ein Datensatzabschnitt kann von einem anderen Datensatzabschnitt auf einer beliebigen Verschachtelungsebene referenziert werden.
Record Employee
EmpNo INT;
Name STRING?;
end
Ausführliche Details zur unterschiedlichen Behandlung von Null durch die EGL-Laufzeit beim Schreiben eines Datensatzes in eine XML-Zeichenfolge finden Sie in den Informationen zur Eigenschaft '@XMLElement' (oder '@XMLRootElement'), Eigenschaftsfeld 'nillable'.
Details zu diesen Eigenschaften finden Sie unter '@RootElement' und 'XMLStructure'.
Beim Deklarieren eines Datensatzes auf der Basis des Datensatzabschnitts können Sie diese Eigenschaften nicht überschreiben.
Details zu diesen Eigenschaften finden Sie unter '@XMLElement' und 'XMLAttribut'.
Rich UI unterstützt das Lesen und Schreiben von XML-Zeichenfolgen, die Namespaces (Namensbereiche) enthalten. Sie können einen Namespace in der Eigenschaft '@RootElement', '@XMLElement' und '@XMLAttribute' referenzieren.
Wenn XML einen standardmäßigen Namespace enthält, müssen Sie den Namespace referenzieren, wenn Sie die Datensatzfelder für die einzelnen XML-Elemente in diesem Namespace definieren. Beachten Sie, dass sich XML-Attribut niemals in einem standardmäßigen Namespace befinden. Ein Attribut besitzt entweder ein Namespace-Präfix oder befindet sich in keinem Namespace.
Um sich ausführlich über die verfügbaren Alternativen in EGL zu informieren, lesen Sie die Themen zu den XML-relevanten Eigenschaften. Beachten Sie auch, dass die EGL-Laufzeit in bestimmten Fällen eine Ausnahmebedingung vom Typ 'XMLProcessingException' ausgibt, wie unter 'Ausnahmedatensatz für XML' erläutert wird.