XDokumente
Diese Datei dokumentiert alle Makrofunktionen der Kategorie XDokumente.
Inhaltsverzeichnis
- XDClose(Dateinummer)
- XDCount(Dateinummer,Knotennummer,Query)
- XDCreate(Dateityp)
- XDCreateFromString(Text,Dateityp)
- XDDelete(Dateinummer,Knotennummer)
- XDFind(Dateinummer,Elementname,[Knotennummer])
- XDFindAll(Dateinummer,Arrayname,Elementname,[Knotennummer])
- XDGetAttribute(Dateinummer,Knotennummer,Attributname)
- XDGetText(Dateinummer,Knotennummer)
- XDInsert(Dateinummer,Referenz,Inhalt,[Vorher])
- XDOpen(Dateiname)
- XDSetAttribute(Dateinummer,Knotennummer,Attributname,Inhalt)
- XDSetText(Dateinummer,Knotennummer,Inhalt)
- XDWrite(Dateinummer,Dateiname)
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);
}