XML-Funktionen im Jitterbit Integration Studio
XML-Funktionen werden typischerweise in Transformation verwendet, die die Bearbeitung von und den Zugriff auf XML-Daten erfordern.
Attribute
Erklärung
type Attribute(string attributeName, string attributeValue)
Syntax
Attribute(<attributeName>, <attributeValue>)
Erforderliche Parameter
attributeName
: AttributnameattributeValue
: Attributwert
Beschreibung
Erstellt ein Attribut für einen XML-Knoten. Siehe auch CreateNode
Funktion.
Beispiele
// Adds an attribute "name" with a value of "value"
Attribute("name","value");
CreateNode
Erklärung
string CreateNode(string namespace, string nodeName, type attributeSubelement[,...])
Syntax
CreateNode(<namespace>, <nodeName>, <attributeSubelement>[,...])
Erforderliche Parameter
namespace
: Der Namespace des KnotensnodeName
: Name des KnotensattributeSubelement
: Ein Unterelement: ein Wert, Attribut oder Unterknoten
Optionale Parameter
attributeSubelement
: Zusätzliche Unterelemente (ein Wert, Attribut oder Unterknoten), je nach Bedarf
Beschreibung
Erstellt eine Zeichenfolge, die einen XML-Knoten darstellt. Wenn der Zielknoten der Wertknoten eines XML Any-Knotens ist, wird ein XML-Element, das dem nodeName
Und nodeValue
wird erstellt.
Ab dem dritten Argument können eine Reihe von Werten, Attributen und Unterknoten angegeben werden. Werte werden direkt angegeben. Attribute und Unterknoten können mit dem Attribute
Und CreateNode
Funktionen bzw.### Beispiele {: #examples }
// Creates a node with a sub-node
CreateNode("http://example.com/xml",
"Contact", "Bill G.", Attribute("Type", "VIP"),
CreateNode("http://example.com/xml",
"Title", "Manager")
);
GetNodeName
Erklärung
string GetNodeName(type path)
Syntax
GetNodeName(<path>)
Erforderliche Parameter
path
: Ein String-Referenzpfadausdruck, der einen einzelnen Knoten in der aktuellen Transformation auswählt, oder Roh-XML
Beschreibung
Ruft den Namen eines Knotens ab. Diese Methode wird normalerweise verwendet, um den Namen eines Knotens abzurufen, der von einem der folgenden zurückgegeben wird: SelectNodeFromXMLAny
oder SelectSingleNode
Funktionen.
Um einen Pfad zu einem Knoten in die Funktion für den path
Parameter, ziehen Sie den gewünschten XML-Knotenordner von der Tab Quellobjekte der Skriptkomponentenpalette per Drag & Drop in das Script, um seinen qualifizierten Pfad an der Position Ihres Cursors einzufügen, oder geben Sie seinen Referenzpfad manuell ein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Quellobjekten.
Beispiele
// Retrieves the name of a node
GetNodeName(SelectNodeFromXMLAny("Account", Root$Any.));
GetNodeValue
Erklärung
string GetNodeValue(type path)
Syntax
GetNodeValue(<path>)
Erforderliche Parameter
path
: Ein String-Referenzpfadausdruck, der einen einzelnen Knoten in der aktuellen Transformation auswählt, oder Roh-XML
Beschreibung
Ruft den Wert eines Knotens ab. Diese Methode wird normalerweise verwendet, um den Wert eines Knotens abzurufen, der von einem der folgenden zurückgegeben wird: SelectNodeFromXMLAny
oder SelectSingleNode
Funktionen.
Um einen Pfad zu einem Knoten in die Funktion für den path
Parameter, ziehen Sie den gewünschten XML-Knotenordner von der Tab Quellobjekte der Skriptkomponentenpalette per Drag & Drop in das Script, um seinen qualifizierten Pfad an der Position Ihres Cursors einzufügen, oder geben Sie seinen Referenzpfad manuell ein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Quellobjekten.
Beispiele
// XML definition
xmlInput = '<?xml version="1.0" encoding="UTF-8"?>
<root>
<father>
<child>
<name>John Smith</name>
<age>20</age>
</child>
<child>
<name>Jordan Coleman</name>
<age>32</age>
</child>
<child>
<name>Joel Parker</name>
<age>54</age>
</child>
<child>
<name>Roger Wright</name>
<age>28</age>
</child>
</father>
</root>';
// Retrieve the name of the second child:
exampleArray = GetNodeValue(SelectNodes(xmlInput, "/root/father/child[position() = 2]/name"));
result = exampleArray[0];
// Equals "Jordan Coleman"
// Retrieves the value of a node
GetNodeValue(SelectNodeFromXMLAny("Account", Root$Any.));
GetXMLString
Erklärung
string GetXMLString(type path[, bool qualified])
Syntax
GetXMLString(<path>[, <qualified>])
Erforderliche Parameter
path
: Ein String-Referenzpfadausdruck, der einen einzelnen Knoten in der aktuellen Transformation auswählt. Der definierte Pfad muss für einen Knoten sein; bestimmte Felder und Attribute werden bei der Pfadauswertung ignoriert.
Optionale Parameter
qualified
: Ein boolescher Wert (Standardfalse
); wenn qualifiziert (true
), ist die zurückgegebene XML-Zeichenfolge leichter zu lesen, muss aber selbst kein gültiges XML sein
Beschreibung
Gibt (bei Verwendung in einer Transformation ) die entsprechende XML-Zeichenfolge zurück, die im XML-Quelldokument unter dem angegebenen Pfad gefunden wurde.
Um einen Pfad zu einem Knoten in die Funktion für den path
Parameter, ziehen Sie den gewünschten XML-Knotenordner von der Tab Quellobjekte der Skriptkomponentenpalette per Drag & Drop in das Script, um seinen qualifizierten Pfad an der Position Ihres Cursors einzufügen, oder geben Sie seinen Referenzpfad manuell ein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Quellobjekten.
Hinweis
Der definierte Pfad muss für einen Knoten sein; bestimmte Felder und Attribute werden bei der Pfadauswertung ignoriert.
Beispiele
// Retrieves the corresponding XML string at the specified path
GetXMLString([Header$DETAIL.]);
// Retrieves the corresponding XML string at the specified path
GetXMLString([root$transaction.response$body$queryResponse$result$records.Case$Account$]);
IsNil
Erklärung
bool IsNil(string path)
Syntax
IsNil(<path>)
Erforderliche Parameter
path
: Ein String-Referenzpfadausdruck, der einen einzelnen Knoten in der aktuellen Transformation auswählt
Beschreibung
Gibt zurück (bei Verwendung in einer Formel-Generator-Zuordnung), ob der entsprechende XML-Knoten das Attribut „xsi:nil
" mit dem Wert von true
(oder 1).
Um einen Pfad zu einem Knoten in die Funktion für den path
Parameter, ziehen Sie den gewünschten XML-Knotenordner von der Tab Quellobjekte der Skriptkomponentenpalette per Drag & Drop in das Script, um seinen qualifizierten Pfad an der Position Ihres Cursors einzufügen, oder geben Sie seinen Referenzpfad manuell ein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Quellobjekten.
Wie in XML-Schema beschrieben, kann ein Element ohne Inhalt gültig sein, wenn es das Attribut xsi:nil
mit dem Wert true
.
Beispiele
// Returns if the node is nil
IsNil("Header$DETAIL.");
RunXSLT
Erklärung
array RunXSLT(string xslt, string xml1[, string xml2,... string xmlN)
Syntax
RunXSLT(<xslt>, <xml1>[, <xml2>,... <xmlN>])
Erforderliche Parameter
xslt
: Ein String-Referenzpfad zu einer Aktivität, die mit einem Dateityp-Endpoint im aktuellen Projekt verknüpft ist gibt ein XSLT-Stylesheet zurückxml1...xmlN
: Ein String-Referenzpfad zu einer Aktivität, die mit einem Dateityp-Endpoint im aktuellen Projekt, das ein oder mehrere XML-Dokumente zurückgibt
Beschreibung
Unterstützt die Ausführung von XSLT (v1-3) auf einer Reihe von XML-Eingabedokumenten. Nimmt als Eingabe ein XSLT-Stylesheet und ein oder mehrere XML-Dokumente und gibt ein Array von XML-Dokumenten zurück.
Die xslt
Der in diesem Funktionsaufruf verwendete Parameter muss als Aktivität definiert werden, die mit einem Dateityp-Endpoint im aktuellen Projekt verknüpft ist, der ein XSLT-Stylesheet zurückgibt. Der xml1...xmlN
Die in diesem Funktionsaufruf verwendeten Parameter müssen als eine oder mehrere Aktivitäten definiert werden, die mit Dateityp-Endpoints im aktuellen Projekt verknüpft sind und ein oder mehrere XML-Dokumente zurückgeben. Dazu gehören konfigurierte Aktivitäten für Dateifreigabe, FTP, HTTP, lokalen Speicher und temporären Speicher. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Endpoints.
Wenn Ihre XSLT-Stylesheets eingebettete, verschachtelte JSON-Instanzen enthalten, die beibehalten werden müssen, setzen Sie das jitterbit.transformation.ignore_default_value
variabel auf true
davorlegende dieser Funktion. Diese Variable wird bei Verwendung von Agenten der Version 11.36 und höher unterstützt.
Verweisen auf Dateien aus einem XSLT-Stylesheet
Obwohl Jitterbit eine breite Unterstützung für XSLT bietet, müssen Projekte, die XSLT verwenden, Regeln befolgen, um die Sicherheitsstandards zu erfüllen. Diese Regeln bedeuten, dass der Zugriff auf Dateien oder URIs immer über Aktivitäten erfolgen muss, die im selben Projekt definiert sind.
Um diese Dateien oder URIs in einem Stylesheet zu referenzieren, verwenden Sie das XLST fn:doc
Funktion und geben Sie 'param1'
für den ersten XML-Input, 'param2'
für den zweiten XML-Input und so weiter für jede weitere XML-Datei.
Im Beispiel der Verarbeitung von drei XML-Dateien (customers, salesPeople, salesOrders
), können Sie in einem XSLT-Stylesheet darauf verweisen, indem Sie Folgendes verwenden:
<xsl:for-each select="doc('param1')/*:Customers/*:SalesOrder[customer_external_id!=''][sales_person_external_id!='']">
...
<xsl:for-each select="doc('param2')/*:SalesPeople/*:Account[*:customer_id/string(number(text()))=$CustomerExtId][1]">
...
<xsl:for-each select="doc('param3')/*:SalesOrders/*:SalesOrder[customer_external_id!=''][sales_person_external_id!='']">
Wenn Sie eine einzelne XML-Eingabedatei haben, ist es nicht erforderlich, die doc('param1')
Syntax wie Jitterbit legt den anfänglichen Kontext auf diese einzelne Datei fest.
Festlegen einer Startvorlage im Stylesheet
In manchen Situationen muss Jitterbit wissen, wo in einem Stylesheet die Verarbeitung beginnen soll. Dies wird erreicht, indem in das Stylesheet eine Vorlage mit dem spezifischen Namen von eingefügt wird start_here
:
<xsl:template name="start_here" match="/">
Beispiele
// Running XSLT on XML Files
// Read in a stylesheet
xslt = ReadFile("<TAG>activity:ftp/FTP Endpoint/ftp_read/XSLT</TAG>");
// Read in two XML files for processing
xml1 = ReadFile("<TAG>activity:ftp/FTP Endpoint/ftp_read/XML1</TAG>");
xml2 = ReadFile("<TAG>activity:ftp/FTP Endpoint/ftp_read/XML2</TAG>");
// RunXSLT on the stylesheet and the two XML files
output = RunXSLT(xslt, xml1, xml2);
// As RunXSLT() returns an array,
// retrieve the output from each element
i = 0;
While(i < Length(output),
// Write output to a file
WriteFile("<TAG>activity:ftp/FTP Endpoint/ftp_write/XML Output FTP</TAG>",
output[i], "output" + (i+1) + ".xml");
i++;
);
SelectNodeFromXMLAny
Erklärung
type SelectNodeFromXMLAny(string nodeName, type anyNodes)
Syntax
SelectNodeFromXMLAny(<nodeName>, <anyNodes>)
Erforderliche Parameter
nodeName
: Der gewünschte KnotennameanyNodes
: Der Datenelementpfad eines Wertknotens eines XML-Elements, ein String-Referenzpfadausdruck zu einem Array von XML-Knoten in der aktuellen Transformation oder reines XML
Beschreibung
Gibt den ersten XML-Knoten aus einer Liste von XML-Knoten zurück, die dem Knotennamen entsprechen.
Um einen Pfad zu einem Array von XML-Knoten in die Funktion für den anyNodes
Parameter, ziehen Sie den gewünschten XML-Knotenordner von der Tab Quellobjekte der Skriptkomponentenpalette per Drag & Drop in das Script, um seinen qualifizierten Pfad an der Position Ihres Cursors einzufügen, oder geben Sie seinen Referenzpfad manuell ein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Quellobjekten.
Beispiele
// Looks for the first node that matches "Account"
SelectNodeFromXMLAny("Account", Root$Any#.);
SelectNodes
Erklärung
array SelectNodes(type node, string xPathQuery[, string xPathArg1,... string xPathArgN])
Syntax
SelectNodes(<node>, <xPathQuery>[, <xPathArg1>,... <xPathArgN>])
Erforderliche Parameter
node
: Ein String-Referenzpfadausdruck zum gewünschten Knoten in der aktuellen Transformation, ein XML-Fragment zum Ausführen der Abfrage oder reines XMLxPathQuery
: Der Datenelementpfad eines Wertknotens eines XML Any-Elements
Optionale Parameter
xPathArg1...xPathArgN
: Präfixe, die die Namespaces von Knoten in der XPath Abfrage angeben
Beschreibung
Führt eine XPath-Abfrage aus (siehe XPath-Standard, v1-v3) entweder auf einem XML-Fragment oder einem XML-Knoten, der von einer anderen Funktion zurückgegeben wurde, und gibt die Ergebnisse der Abfrage zurück.
Wenn die optionalen Präfixe verwendet werden, um die Namespaces des Knotens in der XPath Abfrage anzugeben, müssen die Präfixe als ein oder mehrere String-Argumente nach dem XPath angegeben werden (siehe zweites Beispiel).
Um einen Pfad zu einem Knoten in die Funktion für den node
Parameter, ziehen Sie den gewünschten XML-Knotenordner von der Tab Quellobjekte der Skriptkomponentenpalette per Drag & Drop in das Script, um seinen qualifizierten Pfad an der Position Ihres Cursors einzufügen, oder geben Sie seinen Referenzpfad manuell ein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Quellobjekten.
Um HTML-Zeichen zu unterstützen, setzen Sie jitterbit.decode.html.chars
Zu true
davorlegende dieser Funktion. Diese Variable wird mit Zeichenfolgendaten unterstützt, wenn Agenten der Version 10.49 und höher verwendet werden.
Beispiele
// XML definition
xmlInput = '<?xml version="1.0" encoding="UTF-8"?>
<root>
<father>
<child>
<name>John Smith</name>
<age>20</age>
</child>
<child>
<name>Jordan Coleman</name>
<age>32</age>
</child>
<child>
<name>Joel Parker</name>
<age>54</age>
</child>
<child>
<name>Roger Wright</name>
<age>28</age>
</child>
</father>
</root>';
// Retrieve all the XML nodes that match the XPath query:
SelectNodes(xmlInput, "/root/father/child");
// Returns {"<child> <name>John Smith</name> <age>20</age> </child>","<child> <name>Jordan Coleman</name> <age>32</age> </child>","<child> <name>Joel Parker</name> <age>54</age> </child>","<child> <name>Roger Wright</name> <age>28</age> </child>"}
// Retrieve a range of nodes using a position argument with the XPath query:
SelectNodes(xmlInput, "/root/father/child[position() > 2 and position() <= 4]");
// Returns {"<child> <name>Joel Parker</name> <age>54</age> </child>","<child> <name>Roger Wright</name> <age>28</age> </child>"}
// XML definition with root namespace
xmlInput = '<?xml version="1.0" encoding="UTF-8"?>
<ns0:root xmlns:ns0="urn:ean.ucc:align:2">
<father>
<child>
<name>John Smith</name>
<age>20</age>
</child>
<child>
<name>Jordan Coleman</name>
<age>32</age>
</child>
<child>
<name>Joel Parker</name>
<age>54</age>
</child>
<child>
<name>Roger Wright</name>
<age>28</age>
</child>
</father>
</ns0:root>';
// Retrieve all the XML nodes that match the XPath query with a namespace considered:
SelectNodes(xmlInput, "/ns0:root/father/child", "ns0=urn:ean.ucc:align:2");
// Returns {"<child> <name>John Smith</name> <age>20</age> </child>","<child> <name>Jordan Coleman</name> <age>32</age> </child>","<child> <name>Joel Parker</name> <age>54</age> </child>","<child> <name>Roger Wright</name> <age>28</age> </child>"}
// Connects to an LDAP server, runs a search,
// and then runs an XPath query on the results
LDAPConnect("directory.company.example.com","ghvwright","1LikesPe@ches",0);
searchResults = LDAPSearch("CN=Users,DC=company,DC=example,DC=com",
"(&(objectCategory=person)(objectClass=user))", 1,
"name", "whenCreated", "description", "telephoneNumber");
resultNodes = SelectNodes(searchResults,
"/DirectoryResults/Entry[name='Administrator']/whenCreated" );
SelectNodes(Root$Any$,
"ns1:E2/ns2:E3",
"ns1=http://xyz1.example.com/",
"ns2=http://xyz2.example.com/");
Notiz
In diesem zweiten Beispiel ist der Referenzknoten ein XML-Knoten für einen XML Any-Knoten. In der XPath Abfrage ns1:E2
ist nicht der Referenzknoten selbst.
Da die Präfixe ns1
Und ns2
werden in der XPath-Abfrage verwendet und als zusätzliche Argumente nach dem XPath definiert.
SelectNodesFromXMLAny
Erklärung
array SelectNodesFromXMLAny(string xPathQuery, type anyNodes[, string xPathArg1,... string xPathArgN])
Syntax
SelectNodesFromXMLAny(<xPathQuery>, <anyNodes>[, <xPathArg1>,... <xPathArgN>])
Erforderliche Parameter
xPathQuery
: Eine XPath AbfrageanyNodes
: Der Datenelementpfad eines Wertknotens eines XML-Elements, ein String-Referenzpfadausdruck zu einem Array von XML-Knoten in der aktuellen Transformation oder reines XML
Optionale Parameter
xPathArg1...xPathArgN
: Präfixe, die die Namespaces von Knoten in der XPath Abfrage angeben
Beschreibung
Gibt ein Array aller XML-Knoten zurück, die mit einer XPath-Abfrage übereinstimmen (siehe XPath-Standard, v1-v3) wird entweder gegen einen Pfad eines Wertknotens eines beliebigen XML-Elements oder gegen ein Array von XML-Knoten ausgeführt.
Wenn die optionalen Präfixe verwendet werden, um die Namespaces des Knotens in der XPath Abfrage anzugeben, müssen die Präfixe als ein oder mehrere String-Argumente nach dem XPath angegeben werden (siehe zweites Beispiel).
Um einen Pfad zu einem Array von XML-Knoten in die Funktion für den anyNodes
Parameter, ziehen Sie den gewünschten XML-Knotenordner von der Tab Quellobjekte der Skriptkomponentenpalette per Drag & Drop in das Script, um seinen qualifizierten Pfad an der Position Ihres Cursors einzufügen, oder geben Sie seinen Referenzpfad manuell ein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Quellobjekten.
Beispiele
// Select all the nodes with the given names
SelectNodesFromXMLAny("Account|Customer|Name", Root$Any#.);
// Select email addresses and phone numbers only
$nodes = SelectNodesFromXMLAny("cust:EmailAddress|cust:PhoneNumber",
Customer$Any#., "cust=urn:xmlns:25hoursaday-com:customer");
SelectSingleNode
Erklärung
type SelectSingleNode(type node, string xPath,...)
Syntax
SelectSingleNode(<node>, <xPath>,...)
Erforderliche Parameter
-
node
: Ein String-Referenzpfadausdruck zum gewünschten Knoten in der aktuellen Transformation, ein XML-Fragment zum Ausführen der Abfrage oder reines XML -
xPathQuery
: Der Datenelementpfad eines Wertknotens eines XML Any-Elements
Optionale Parameter
xPathArg1...xPathArgN
: Präfixe, die die Namespaces von Knoten in der XPath Abfrage angeben
Beschreibung
Führt eine XPath-Abfrage aus (siehe XPath-Standard, v1-v3) entweder auf einem XML-Fragment oder einem XML-Knoten, der von einer anderen Funktion zurückgegeben wurde, und gibt den ersten Knoten in den Ergebnissen der Abfrage zurück.
Wenn die optionalen Präfixe verwendet werden, um die Namespaces des Knotens in der XPath Abfrage anzugeben, müssen die Präfixe als ein oder mehrere String-Argumente nach dem XPath angegeben werden (siehe zweites Beispiel).
Um einen Pfad zu einem Knoten in die Funktion für den node
Parameter, ziehen Sie den gewünschten XML-Knotenordner von der Tab Quellobjekte der Skriptkomponentenpalette per Drag & Drop in das Script, um seinen qualifizierten Pfad an der Position Ihres Cursors einzufügen, oder geben Sie seinen Referenzpfad manuell ein. Weitere Informationen finden Sie in den Anweisungen zum Einfügen von Quellobjekten.
Um HTML-Zeichen zu unterstützen, setzen Sie jitterbit.decode.html.chars
Zu true
davorlegende dieser Funktion. Diese Variable wird mit Zeichenfolgendaten unterstützt, wenn Agenten der Version 10.49 und höher verwendet werden.
Beispiele
// XML definition
xmlInput = '<?xml version="1.0" encoding="UTF-8"?>
<root>
<father>
<child>
<name>John Smith</name>
<age>20</age>
</child>
<child>
<name>Jordan Coleman</name>
<age>32</age>
</child>
<child>
<name>Joel Parker</name>
<age>54</age>
</child>
<child>
<name>Roger Wright</name>
<age>28</age>
</child>
</father>
</root>';
// Retrieve the first matching node given an XPath query:
SelectSingleNode(xmlInput, "/root/father/child");
// Returns <child> <name>John Smith</name> <age>20</age> </child>
// Connects to an LDAP server, runs a search,
// runs an XPath query on the results, and
// selects the first node in the query results
LDAPConnect("directory.company.example.com", "ghvwright", "1LikesPe@ches", 0);
searchResults = LDAPSearch("CN=Users,DC=company,DC=example,DC=com",
"(&(objectCategory=person)(objectClass=user))", 1, "name",
"whenCreated", "description", "telephoneNumber");
resultNode = SelectSingleNode(searchResults,
"/DirectoryResults/Entry[name='Administrator']/whenCreated");
// Selects the first node in an XPath query result.
// The reference node is an XML node for an XML Any node.
// In the XPath query, "ns1:E2" is not the reference node itself.
// Since the prefixes ns1 and ns2 are used in the XPath query,
// they are defined as additional arguments after the XPath.
SelectSingleNode(Root$Any$,
"ns1:E2/ns2:E3",
"ns1=http://xyz1.example.com",
"ns2=http://xyz2.example.com/");