XML-APIs

  • Freigeben Version: Yokohama
  • Aktualisiert 25. Juni 2026
  • 4 Minuten Lesedauer
  • XML-APIs können nach dem Aufruf verwendet werden GetAsXmlContent() Entweder auf Anforderung Objekt oder ein ParameterWert Eigenschaft.

    Wenn Sie XML-APIs zum Schreiben Ihrer Verschlüsselungsregel verwenden, können Sie einem allgemeinen Format folgen:
    1. Rufen Sie An GetAsXmlContent() Auf Anforderung Objekt oder ParameterWert Eigenschaft. Gibt ein iterfähiges Objekt von zurück XMLInhalt Zugrunde liegende Klasse.
    2. Rufen Sie An GetIterator() Oder GetIterator (Zeichenfolgen-XPath) Auf XMLInhalt Objekt. Dies gibt einen zurück XMLElementIterator Objekt, das zum Iterieren über XML-Elemente verwendet werden kann.
    3. Rufen Sie an HasNext() Methode auf XMLElementIterator Objekt, um zu bestimmen, ob ein anderes Element verfügbar ist.
    4. Rufen Sie An Next() Auf XMLElementIterator Objekt, um das nächste XML-Element zurückzugeben. Sie können nicht anrufen Next() Ohne ersten Anruf HasNext() .
    5. Rufen Sie An WertFor(Zeichenfolge tableName, Zeichenfolge feldName) Im XML-Element. Diese Methode teilt dem Proxy mit, dass der Wert für dieses Element dem angegebenen Feld in der angegebenen Tabelle zugeordnet ist. Der Proxy überprüft dann, ob das Feld verschlüsselt werden muss.
      Hinweis:
      Um zu bestimmen, ob Sie anrufen möchten WertFor(Zeichenfolge tableName, Zeichenfolge feldName) Für ein XML-Element können Sie verwenden GetName() Methode zum Rückgeben des Namens des Elements.

    Zuordnung zu einem bekannten Tabellenfeld in der Instanz

    In diesem Beispiel wird die XML-Nutzlast in der Instanz verarbeitet, um Datensätze in die Incident-Tabelle einzufügen. Das Beschreibungsfeld füllt „short_description“ für den Incident aus.

    <data>
        <record>
            <name>'Test Record 1'</name>
            <description>'Test Record 1 Description'</description>
            <tag>critical</tag>
        </record>
        <record>
            <name>'Test Record 2'</name>
            <description>'Test Record 2 Description'</description>
            <tag>security</tag>
        </record>
    </data>

    Die folgende Verschlüsselungsregelaktion kann angewendet werden:

    function sampleXmlAction1() {
        var xmlContent = request.getAsXmlContent();
        // This loop iterates over all description tags that match the given path
        var xmlElementIterator = xmlContent.getIterator('data/record/description');    
        while (xmlElementIterator.hasNext()) {
            var xmlElement = xmlElementIterator.next();
            xmlElement.valueFor('incident', 'short_decription');
        }
    }

    Diese Aktion wird durch iteriert Beschreibung Taggt und fordert den Proxy-Server auf, die Werte zu verschlüsseln und in Incident.short_description in der Instanz einzufügen.

    Hinweis:
    Diese Regel findet alle Beschreibung Tags in allen Datensatz Tags in der XML-Nutzlast. Wenn nur ein Tag verschlüsselt werden soll, verwendet die Regel weiterhin den XPath und die Iteratorstruktur. Es wird jedoch nur einmal in der Schleife iteriert.

    Zuordnung zu einem unbekannten Tabellenfeld in der Instanz

    In diesem Beispiel wird die Regel über iteriert Datensatz Tags, aber weiß nicht, welche Tags innerhalb von erwartet werden sollen Datensatz Tag. Es ist nur bekannt, dass die Tags innerhalb von Datensatz Tags stimmen mit den Namen der Spalten überein, die im Parameter „Tabellen-URL“ angegeben sind.

    Die Regel gibt auch an, dass, wenn die Tabelle „Incident“ ist, die Daten in der Beschreibung Tag muss verschlüsselt und im Feld „short_description“ in der Instanz gespeichert werden.

    function sampleXmlAction2() {
        var xmlContent = request.getAsXmlContent();
        var tableName = request.urlParam.table;
        // This first iterator will iterate over all record elements
        var xmlElementIterator = xmlContent.getIterator('data/record');
        while (xmlElementIterator.hasNext()) {
            encryptFieldsInRecord(xmlElementIterator.next());
        }
    }
    function encryptFieldsInRecord(xmlElement) {
        //Then, iterate over all tags representing fields in the table
        var fieldIterator = xmlElement.getIteratorOverAllChildren();
        while (fieldIterator.hasNext()) {
            var field = fieldIterator.next();
            var fieldName = childElement.getName();
            //if table is incident, then description is encrypted for the short_description field
            if (tableName == 'incident' && fieldName == 'description') {
                field.valueFor(tableName, 'short_description');
            } else {
                //if table is not incident, ask the proxy to check if the given field is encrypted for the given table
                field.valueFor(tableName, fieldName);
            }
        }
    }

    In VerschlüsseltFieldsInRecord() Funktion, die WertFür() Die Methode wird für eine Tabelle und ein Feld aufgerufen, die basierend auf der Anforderung dynamisch zugewiesen werden. Auch wenn sich die Tabellen- und Feldnamen ändern können, fordert die Regel den Proxy auf, zu überprüfen, ob das Feld in der Tabelle basierend auf den definierten Verschlüsselungskonfigurationen verschlüsselt werden muss.

    Wenn das Feld nicht für die Verschlüsselung konfiguriert ist oder wenn das Tag nicht mit einem Feld in der Tabelle übereinstimmt, überspringt der Proxy dieses Tag. Wenn das Tag mit einem Feld übereinstimmt, das für die Verschlüsselung markiert ist, dann wird Edge EncryptionProxy-Server verschlüsselt den Wert.

    Mit einer codierten Abfrage

    In diesem Beispiel haben alle Tags die Filtern Attribut, das angibt, ob das Tag eine codierte Abfrage enthält.

    <data>
        <record>
            <name filter="false">'Test Record 1'</name>
            <description filter="false">'Test Record 1 Description'</description>
            <query filter="true">category=1^name=edge</query>
        </record>
        <record>
            <name filter="false">'Test Record 2'</name>
            <description filter="false">'Test Record 2 Description'</description>
            <query filter="true">category=2^severity=3</query>
       </record>
    </data>

    Die folgende Verschlüsselungsregelaktion kann angewendet werden:

    function sampleXmlAction3() {
       var xmlContent = request.getAsXmlContent();
       var tableName = request.urlParam.table;
       // This first iterator will iterate over all record elements
       var xmlElementIterator = xmlContent.getIterator('data/record');
       while (xmlElementIterator.hasNext()) {
           encryptFieldsInRecord(xmlElementIterator.next());
       }
    }
    function encryptFieldsInRecord(xmlElement) {
       //this time we want to iterate over all tags representing fields in the table
       var fieldIterator = xmlElement.getIteratorOverAllChildren();
       while (fieldIterator.hasNext()) {
           var field = fieldIterator.next();
           var fieldname = childElement.getName();
           //let's look at the filter attribute, if true, then encrypt as encoded query
           if (field.getAttributeValue('filter') == 'true') {
               field.encodedQueryFor(tableName);
           } else {
               //if it is false then check if the field should be encrypted
               field.valueFor(tableName, fieldName);
           }
       }
    }

    Wenn Filtern Attributwert ist „wahr“. Die Regel fordert den Proxy-Server auf, die Werte in der codierten Abfrage zu verschlüsseln. Bei „falsch“ fordert die Regel den Proxy auf, zu überprüfen, ob das Feld verschlüsselt werden soll.