XDokumente

Diese Datei dokumentiert alle Makrofunktionen der Kategorie XDokumente.

Inhaltsverzeichnis

XDClose(Dateinummer)

Beendet den XML Datei Zugriff

Parameter

Nr. Parameter Beschreibung
1 Dateinummer Die Nummer der XML-Datei, die geschlossen werden soll.

Rückgabewert

1:Dokument geschlossen, 0:Fehler

Verfügbarkeit

42 Makro Runtime

Beispiel

Main()
{
    suffix = "xml";
    fileName = "c:\\test\\NewXml." + suffix;
    // sicherstellen, dass Datei weg ist
    if(ExistsFile(filename))
        DeleteFile(fileName);
    // leeres Dokument öffnen (deine Engine muss das können!)
    file = XDCreate(suffix);
    // komplettes XML als Root einfügen
    xml =
        "<root>" +
            "<item id='1'>Alpha</item>" +
            "<item id='2'>Beta</item>" +
        "</root>";
    // Root einfügen (kein parent nötig oder "" je nach Engine)
    rootId = XDInsert(file, "", xml);
    print("Root eingefügt: " + rootId);
    // speichern
    XDWrite(file, fileName);
    XDClose(file);
    print("Datei erstellt: " + fileName);
    // Test: wieder öffnen
    file = XDOpen(fileName);
    node = XDFind(file, "//item[@id='2']");
    print("Gefunden: " + XDGetText(file, node));
    XDClose(file);
    return(1);
}

XDCount(Dateinummer,Knotennummer,Query)

Ermittelt die Anzahl der Vorkommen eines Elements im Dokument

Parameter

Nr. Parameter Beschreibung
1 Dateinummer Die Nummer der geöffneten XML-Datei, in der die Anzahl der Elemente gezählt wird.
2 Knotennummer Die Knotennummer, des Elements, unter dem die Anzahl der Vorkommen gezählt wird.
3 Query Die Suchpfad (XPath; JsonPath).

Rückgabewert

Anzahl Elemente

Verfügbarkeit

42 Makro Runtime


XDCreate(Dateityp)

Erstellt eine XML Datei zum Bearbeiten (Context: Connector;Business Extension)

Parameter

Nr. Parameter Beschreibung
1 Dateityp Der Typ der zu erstellenden Datei (xml, html, json, csv, txt)

Rückgabewert

XML-Dokument-ID oder 0:Fehler

Verfügbarkeit

42 Makro Runtime & Business Extension (nur im Extension-Kontext)

Beispiel

Main()
{
    suffix = "xml";
    fileName = "c:\\test\\NewXml." + suffix;
    // sicherstellen, dass Datei weg ist
    if(ExistsFile(filename))
        DeleteFile(fileName);
    // leeres Dokument öffnen (deine Engine muss das können!)
    file = XDCreate(suffix);
    // komplettes XML als Root einfügen
    xml =
        "<root>" +
            "<item id='1'>Alpha</item>" +
            "<item id='2'>Beta</item>" +
        "</root>";
    // Root einfügen (kein parent nötig oder "" je nach Engine)
    rootId = XDInsert(file, "", xml);
    print("Root eingefügt: " + rootId);
    // speichern
    XDWrite(file, fileName);
    XDClose(file);
    print("Datei erstellt: " + fileName);
    // Test: wieder öffnen
    file = XDOpen(fileName);
    node = XDFind(file, "//item[@id='2']");
    print("Gefunden: " + XDGetText(file, node));
    XDClose(file);
    return(1);
}

XDCreateFromString(Text,Dateityp)

Erstellt ein XML - Dokument aus einem XML - String(z.B. aus dem Internet geladen)

Parameter

Nr. Parameter Beschreibung
1 Text Der Inhalt der zu erstellenden Datei (xml, html, json, csv, txt)
2 Dateityp Der Typ der zu erstellenden Datei (xml, html, json, csv, txt)

Rückgabewert

XML-Dokument-ID oder 0:Fehler

Verfügbarkeit

42 Makro Runtime


XDDelete(Dateinummer,Knotennummer)

Löscht ein Element inklusive aller untergeordneten Elemente aus dem Dokument (Context: Connector;Business Extension)

Parameter

Nr. Parameter Beschreibung
1 Dateinummer Die Nummer der geöffneten XML-Datei, aus der der Textinhalt abgerufen wird.
2 Knotennummer Die Knotennummer des Elements, unter dem das Elements, die die Position eines gesuchten Elements in der XML-Datei angibt.

Rückgabewert

1:Element gelöscht, 0:Fehler

Verfügbarkeit

42 Makro Runtime & Business Extension (nur im Extension-Kontext)

Beispiel

Main()
{
    cls();
    suffix = "json";
    fileName = "c:\\test\\TestXDoc-NewJson." + suffix;
    // Datei löschen
    if(ExistsFile(fileName))
        DeleteFile(fileName);
    // Dokument erstellen
    file = XDCreate(suffix);
    json =
    "{" +
        "\"customer\": {" +
            "\"name\": \"Max\"," +
            "\"age\": 42" +
        "}," +
        "\"items\": [" +
            "{ \"id\": 1, \"name\": \"Alpha\" }," +
            "{ \"id\": 2, \"name\": \"Beta\" }" +
        "]" +
    "}";
    // Root setzen
    rootId = XDInsert(file, "", json);
    print("Root eingefügt: " + rootId);
    // speichern
    XDWrite(file, fileName);
    XDClose(file);
    print("Datei erstellt: " + fileName);
    // wieder öffnen
    file = XDOpen(fileName);
    // 1. einfacher Find
    node = XDFind(file, "$.items[1].name");
    print("Item[1].name: " + XDGetText(file, node));
    // 2. Attribute (Property) lesen
    cust = XDFind(file, "$.customer");
    print("Customer Name: " + XDGetAttribute(file, cust, "name"));
    // 3. SetAttr
    XDSetAttribute(file, cust, "city", "München");
    print("City gesetzt: " + XDGetAttribute(file, cust, "city"));
    // 4. Insert in Array
    items = XDFind(file, "$.items");
    newItem = "{ \"id\": 3, \"name\": \"Gamma\" }";
    newId = XDInsert(file, items, newItem);
    print("Neues Item eingefügt: " + newId);
    // 5. Delete
    delNode = XDFind(file, "$.items[0]");
    XDDelete(file, delNode);
    print("Item[0] gelöscht");
    // speichern Ergebnis
    XDWrite(file, fileName);
    XDClose(file);
    return(1);
}

XDFind(Dateinummer,Elementname,[Knotennummer])

Sucht nach einem einzelnen Element im Dokument

Parameter

Nr. Parameter Beschreibung
1 Dateinummer Die Nummer der geöffneten XML-Datei, in der nach einem Element gesucht werden soll.
2 Elementname Der Name des Elements, nach dem in der XML-Datei gesucht werden soll.
3 Knotennummer Optional: Die Knotennummer des Elements, unterdem das Element in der XML-Datei gesucht werden soll.

Rückgabewert

XPath-Treffer oder leer

Verfügbarkeit

42 Makro Runtime

Beispiel

Main()
{
    suffix = "xml";
    fileName = "c:\\test\\NewXml." + suffix;
    // sicherstellen, dass Datei weg ist
    if(ExistsFile(filename))
        DeleteFile(fileName);
    // leeres Dokument öffnen (deine Engine muss das können!)
    file = XDCreate(suffix);
    // komplettes XML als Root einfügen
    xml =
        "<root>" +
            "<item id='1'>Alpha</item>" +
            "<item id='2'>Beta</item>" +
        "</root>";
    // Root einfügen (kein parent nötig oder "" je nach Engine)
    rootId = XDInsert(file, "", xml);
    print("Root eingefügt: " + rootId);
    // speichern
    XDWrite(file, fileName);
    XDClose(file);
    print("Datei erstellt: " + fileName);
    // Test: wieder öffnen
    file = XDOpen(fileName);
    node = XDFind(file, "//item[@id='2']");
    print("Gefunden: " + XDGetText(file, node));
    XDClose(file);
    return(1);
}

XDFindAll(Dateinummer,Arrayname,Elementname,[Knotennummer])

Sucht nach allen Vorkommen eines Elements im Dokument

Parameter

Nr. Parameter Beschreibung
1 Dateinummer Die Nummer der geöffneten XML-Datei, in der alle Vorkommen eines Elements gesucht werden sollen.
2 Arrayname Der Name des Arrays, in dem nach allen Vorkommen eines Elements gesucht wird.
3 Elementname Der Name des Elements, dessen Vorkommen in der XML-Datei gezählt werden sollen.
4 Knotennummer Optional: Die Knotennummer des Elements, unter dem das Elements, die die Position eines gesuchten Elements in der XML-Datei angibt.

Rückgabewert

Anzahl gefundener Elemente

Verfügbarkeit

42 Makro Runtime


XDGetAttribute(Dateinummer,Knotennummer,Attributname)

Liefert den Wert eines Attributs eines Elements

Parameter

Nr. Parameter Beschreibung
1 Dateinummer Die Nummer der geöffneten XML-Datei, aus der der Textinhalt abgerufen wird.
2 Knotennummer Die Knotennummer des Elements, unter dem das Elements, die die Position eines gesuchten Elements in der XML-Datei angibt.
3 Attributname Der Name des Attributs.

Rückgabewert

Attributwert

Verfügbarkeit

42 Makro Runtime

Beispiel

Main()
{
    cls();
    suffix = "json";
    fileName = "c:\\test\\TestXDoc-NewJson." + suffix;
    // Datei löschen
    if(ExistsFile(fileName))
        DeleteFile(fileName);
    // Dokument erstellen
    file = XDCreate(suffix);
    json =
    "{" +
        "\"customer\": {" +
            "\"name\": \"Max\"," +
            "\"age\": 42" +
        "}," +
        "\"items\": [" +
            "{ \"id\": 1, \"name\": \"Alpha\" }," +
            "{ \"id\": 2, \"name\": \"Beta\" }" +
        "]" +
    "}";
    // Root setzen
    rootId = XDInsert(file, "", json);
    print("Root eingefügt: " + rootId);
    // speichern
    XDWrite(file, fileName);
    XDClose(file);
    print("Datei erstellt: " + fileName);
    // wieder öffnen
    file = XDOpen(fileName);
    // 1. einfacher Find
    node = XDFind(file, "$.items[1].name");
    print("Item[1].name: " + XDGetText(file, node));
    // 2. Attribute (Property) lesen
    cust = XDFind(file, "$.customer");
    print("Customer Name: " + XDGetAttribute(file, cust, "name"));
    // 3. SetAttr
    XDSetAttribute(file, cust, "city", "München");
    print("City gesetzt: " + XDGetAttribute(file, cust, "city"));
    // 4. Insert in Array
    items = XDFind(file, "$.items");
    newItem = "{ \"id\": 3, \"name\": \"Gamma\" }";
    newId = XDInsert(file, items, newItem);
    print("Neues Item eingefügt: " + newId);
    // 5. Delete
    delNode = XDFind(file, "$.items[0]");
    XDDelete(file, delNode);
    print("Item[0] gelöscht");
    // speichern Ergebnis
    XDWrite(file, fileName);
    XDClose(file);
    return(1);
}

XDGetText(Dateinummer,Knotennummer)

Liefert den Inhalt des Elements

Parameter

Nr. Parameter Beschreibung
1 Dateinummer Die Nummer der geöffneten XML-Datei, aus der der Textinhalt abgerufen wird.
2 Knotennummer Die Knotennummer des Elements, unter dem das Elements, die die Position eines gesuchten Elements in der XML-Datei angibt.

Rückgabewert

Textinhalt

Verfügbarkeit

42 Makro Runtime

Beispiel

Main()
{
    suffix = "xml";
    fileName = "c:\\test\\NewXml." + suffix;
    // sicherstellen, dass Datei weg ist
    if(ExistsFile(filename))
        DeleteFile(fileName);
    // leeres Dokument öffnen (deine Engine muss das können!)
    file = XDCreate(suffix);
    // komplettes XML als Root einfügen
    xml =
        "<root>" +
            "<item id='1'>Alpha</item>" +
            "<item id='2'>Beta</item>" +
        "</root>";
    // Root einfügen (kein parent nötig oder "" je nach Engine)
    rootId = XDInsert(file, "", xml);
    print("Root eingefügt: " + rootId);
    // speichern
    XDWrite(file, fileName);
    XDClose(file);
    print("Datei erstellt: " + fileName);
    // Test: wieder öffnen
    file = XDOpen(fileName);
    node = XDFind(file, "//item[@id='2']");
    print("Gefunden: " + XDGetText(file, node));
    XDClose(file);
    return(1);
}

XDInsert(Dateinummer,Referenz,Inhalt,[Vorher])

Fügt ein neues Element oder Fragment unterhalb eines angegebenen Knotens ein (Context: Connector;Business Extension)

Parameter

Nr. Parameter Beschreibung
1 Dateinummer Die Nummer der geöffneten XML-Datei.
2 Referenz Die Referenz auf die Einfügeposition. Eine rein numerische Angabe wird als Knotennummer interpretiert, alle anderen Angaben als XPath-Ausdruck. Bei JSON wird nur die Knotennummer unterstützt.
3 Inhalt Der einzufügende Inhalt als XML-, HTML- oder JSON-Fragment.
4 Vorher Optional: Optionale Einfügerichtung relativ zur Referenz. 0 = dahinter [Standard], 1 = davor. Bei JSON nur für Elemente innerhalb eines Arrays unterstützt; für JSON-Objekte nicht unterstützt.

Rückgabewert

XML-Dokument-ID oder 0:Fehler

Verfügbarkeit

42 Makro Runtime & Business Extension (nur im Extension-Kontext)

Beispiel

Main()
{
    suffix = "xml";
    fileName = "c:\\test\\NewXml." + suffix;
    // sicherstellen, dass Datei weg ist
    if(ExistsFile(filename))
        DeleteFile(fileName);
    // leeres Dokument öffnen (deine Engine muss das können!)
    file = XDCreate(suffix);
    // komplettes XML als Root einfügen
    xml =
        "<root>" +
            "<item id='1'>Alpha</item>" +
            "<item id='2'>Beta</item>" +
        "</root>";
    // Root einfügen (kein parent nötig oder "" je nach Engine)
    rootId = XDInsert(file, "", xml);
    print("Root eingefügt: " + rootId);
    // speichern
    XDWrite(file, fileName);
    XDClose(file);
    print("Datei erstellt: " + fileName);
    // Test: wieder öffnen
    file = XDOpen(fileName);
    node = XDFind(file, "//item[@id='2']");
    print("Gefunden: " + XDGetText(file, node));
    XDClose(file);
    return(1);
}

XDOpen(Dateiname)

Liest eine XML Datei zum Durchsuchen oder Bearbeiten ein

Parameter

Nr. Parameter Beschreibung
1 Dateiname Der Name der zu öffnenden XML-Datei zum Lesen.

Rückgabewert

XML-Dokument-ID oder 0:Fehler

Verfügbarkeit

42 Makro Runtime

Beispiel

Main()
{
    suffix = "xml";
    fileName = "c:\\test\\NewXml." + suffix;
    // sicherstellen, dass Datei weg ist
    if(ExistsFile(filename))
        DeleteFile(fileName);
    // leeres Dokument öffnen (deine Engine muss das können!)
    file = XDCreate(suffix);
    // komplettes XML als Root einfügen
    xml =
        "<root>" +
            "<item id='1'>Alpha</item>" +
            "<item id='2'>Beta</item>" +
        "</root>";
    // Root einfügen (kein parent nötig oder "" je nach Engine)
    rootId = XDInsert(file, "", xml);
    print("Root eingefügt: " + rootId);
    // speichern
    XDWrite(file, fileName);
    XDClose(file);
    print("Datei erstellt: " + fileName);
    // Test: wieder öffnen
    file = XDOpen(fileName);
    node = XDFind(file, "//item[@id='2']");
    print("Gefunden: " + XDGetText(file, node));
    XDClose(file);
    return(1);
}

XDSetAttribute(Dateinummer,Knotennummer,Attributname,Inhalt)

Setzt oder ändert den Wert eines Attributs eines Elements (Context: Connector;Business Extension)

Parameter

Nr. Parameter Beschreibung
1 Dateinummer Die Nummer der geöffneten XML-Datei, aus der der Textinhalt abgerufen wird.
2 Knotennummer Die Knotennummer des Elements, unter dem das Elements, die die Position eines gesuchten Elements in der XML-Datei angibt.
3 Attributname Der Name des Attributs.
4 Inhalt Die zu setzende Inhalt

Rückgabewert

1:Attribut gesetzt, 0:Fehler

Verfügbarkeit

42 Makro Runtime & Business Extension (nur im Extension-Kontext)

Beispiel

Main()
{
    cls();
    suffix = "json";
    fileName = "c:\\test\\TestXDoc-NewJson." + suffix;
    // Datei löschen
    if(ExistsFile(fileName))
        DeleteFile(fileName);
    // Dokument erstellen
    file = XDCreate(suffix);
    json =
    "{" +
        "\"customer\": {" +
            "\"name\": \"Max\"," +
            "\"age\": 42" +
        "}," +
        "\"items\": [" +
            "{ \"id\": 1, \"name\": \"Alpha\" }," +
            "{ \"id\": 2, \"name\": \"Beta\" }" +
        "]" +
    "}";
    // Root setzen
    rootId = XDInsert(file, "", json);
    print("Root eingefügt: " + rootId);
    // speichern
    XDWrite(file, fileName);
    XDClose(file);
    print("Datei erstellt: " + fileName);
    // wieder öffnen
    file = XDOpen(fileName);
    // 1. einfacher Find
    node = XDFind(file, "$.items[1].name");
    print("Item[1].name: " + XDGetText(file, node));
    // 2. Attribute (Property) lesen
    cust = XDFind(file, "$.customer");
    print("Customer Name: " + XDGetAttribute(file, cust, "name"));
    // 3. SetAttr
    XDSetAttribute(file, cust, "city", "München");
    print("City gesetzt: " + XDGetAttribute(file, cust, "city"));
    // 4. Insert in Array
    items = XDFind(file, "$.items");
    newItem = "{ \"id\": 3, \"name\": \"Gamma\" }";
    newId = XDInsert(file, items, newItem);
    print("Neues Item eingefügt: " + newId);
    // 5. Delete
    delNode = XDFind(file, "$.items[0]");
    XDDelete(file, delNode);
    print("Item[0] gelöscht");
    // speichern Ergebnis
    XDWrite(file, fileName);
    XDClose(file);
    return(1);
}

XDSetText(Dateinummer,Knotennummer,Inhalt)

Setzt den Inhalt des Elements (Context: Connector;Business Extension)

Parameter

Nr. Parameter Beschreibung
1 Dateinummer Die Nummer der geöffneten XML-Datei, aus der der Textinhalt abgerufen wird.
2 Knotennummer Die Knotennummer des Elements, unter dem das Elements, die die Position eines gesuchten Elements in der XML-Datei angibt.
3 Inhalt Die zu setzende Inhalt

Rückgabewert

1:Text gesetzt, 0:Fehler

Verfügbarkeit

42 Makro Runtime & Business Extension (nur im Extension-Kontext)

Beispiel

Main()
{
    suffix = ".xml";
    fileName = "c:\\test\\test" + suffix;
    targetFile = replace(fileName, suffix, "test-" + suffix);
    file = XDOpen(fileName);
    rootNode = XDFind(file, "/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction");
    print("Root: " + rootNode);
    product1 = XDFind(file, "//ram:SpecifiedTradeProduct[ram:SellerAssignedID='000001']");
    print("Produkt 000001: " + product1);
    product2 = XDFind(file, "//ram:SpecifiedTradeProduct[ram:SellerAssignedID='000008']");
    print("Produkt 000008: " + product2);
    nameNode = XDFind(file, "//ram:SpecifiedTradeProduct[ram:SellerAssignedID='000008']/ram:Name");
    print("Name-Node: " + nameNode);
    print("Name vorher: " + XDGetText(file, nameNode));
    XDSetText(file, nameNode, "TEST PRODUKT XML");
    print("Name geändert.");
    idNode = XDFind(file, "//ram:SpecifiedTradeProduct[ram:SellerAssignedID='000008']/ram:SellerAssignedID");
    print("ID-Node: " + idNode);
    print("ID vorher: " + XDGetText(file, idNode));
    XDSetText(file, idNode, "000099");
    print("SellerAssignedID geändert.");
    insertXml =
        "<ram:IncludedSupplyChainTradeLineItem>" +
            "<ram:AssociatedDocumentLineDocument>" +
                "<ram:LineID>99</ram:LineID>" +
            "</ram:AssociatedDocumentLineDocument>" +
            "<ram:SpecifiedTradeProduct>" +
                "<ram:SellerAssignedID>000999</ram:SellerAssignedID>" +
                "<ram:Name>Neu per Insert</ram:Name>" +
            "</ram:SpecifiedTradeProduct>" +
        "</ram:IncludedSupplyChainTradeLineItem>";
    XDInsert(file, rootNode, insertXml);
    print("Insert ausgeführt.");
    deleteNode = XDFind(file, "//ram:SpecifiedTradeProduct[ram:SellerAssignedID='000001']");
    print("Delete-Node: " + deleteNode);
    XDDelete(file, deleteNode);
    print("Delete ausgeführt.");
    DeleteFile(targetFile);
    XDWrite(file, targetFile);
    XDClose(file);
    print("written: " + targetFile);
    file = XDOpen(targetFile);
    checkName = XDFind(file, "//ram:SpecifiedTradeProduct[ram:SellerAssignedID='000099']/ram:Name");
    print("Check Name Node: " + checkName);
    if(strlen(checkName))
        print("Name nachher: " + XDGetText(file, checkName));
    else
        print("Nameprüfung fehlgeschlagen.");
    checkInsert = XDFind(file, "//ram:SpecifiedTradeProduct[ram:SellerAssignedID='000999']/ram:Name");
    if(strlen(checkInsert))
        print("Insert ok: " + XDGetText(file, checkInsert));
    else
        print("Insert fehlgeschlagen.");
    checkDelete = XDFind(file, "//ram:SpecifiedTradeProduct[ram:SellerAssignedID='000001']");
    if(strlen(checkDelete) == 0)
        print("Delete ok.");
    else
        print("Delete fehlgeschlagen.");
    XDClose(file);
    return(1);
}

XDWrite(Dateinummer,Dateiname)

Schreibt eine XML Datei zurück (Context: Connector;Business Extension)

Parameter

Nr. Parameter Beschreibung
1 Dateinummer Die Nummer der geöffneten XML-Datei, in die Daten geschrieben werden sollen.
2 Dateiname Der Name der XML-Datei, in die Daten geschrieben werden sollen.

Rückgabewert

1:Datei geschrieben, 0:Fehler

Verfügbarkeit

42 Makro Runtime & Business Extension (nur im Extension-Kontext)

Beispiel

Main()
{
    suffix = "xml";
    fileName = "c:\\test\\NewXml." + suffix;
    // sicherstellen, dass Datei weg ist
    if(ExistsFile(filename))
        DeleteFile(fileName);
    // leeres Dokument öffnen (deine Engine muss das können!)
    file = XDCreate(suffix);
    // komplettes XML als Root einfügen
    xml =
        "<root>" +
            "<item id='1'>Alpha</item>" +
            "<item id='2'>Beta</item>" +
        "</root>";
    // Root einfügen (kein parent nötig oder "" je nach Engine)
    rootId = XDInsert(file, "", xml);
    print("Root eingefügt: " + rootId);
    // speichern
    XDWrite(file, fileName);
    XDClose(file);
    print("Datei erstellt: " + fileName);
    // Test: wieder öffnen
    file = XDOpen(fileName);
    node = XDFind(file, "//item[@id='2']");
    print("Gefunden: " + XDGetText(file, node));
    XDClose(file);
    return(1);
}