Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
DOM Find XML element
|
DOM Find XML element ( ElementRef ; xPath {; arrElementRefs} ) -> Funktionsergebnis | ||||||||
Parameter | Typ | Beschreibung | ||||||
ElementRef | String |
![]() |
Referenz auf XML Element | |||||
xPath | Text |
![]() |
Pfad xPath auf das zu suchende Element | |||||
arrElementRefs | Array String |
![]() |
Liste der gefundenen Element Referenzen (falls zutreffend) | |||||
Funktionsergebnis | String |
![]() |
Referenz des gefundenen Elements (wenn zutreffend) | |||||
Die Funktion DOM Find XML element sucht in einer XML Struktur nach einem spezifischen XML Element. Die Suche startet bei dem Element, definiert durch ElementRef.
In xPath setzen Sie den zu suchenden XML Knoten (node), ausgedrückt als "XPath Notation" (siehe Überblick über XML DOM Befehle). Folgende Ausdrücke werden unterstützt:
Ausdruck | Aktion |
nodename | Wählt alle untergeordneten Knoten des Kontextknoten mit Namen "nodename" |
/ | Wählt Knoten vom Root Knoten (absoluter Pfad) |
// | Wählt Knoten im Dokument vom aktuellen Knoten, der zur Auswahl passt, egal wo sie liegen |
@ | Wählt Attribute |
. | Wählt den aktuellen Knoten |
.. | Wählt den übergeordneten Knoten zum aktuellen Knoten |
* | Wählt alle Unterelemente des Kontextknotens |
@* | Wählt alle Attribute des Kontextknotens |
text() | Wählt alle untergeordneten Textknoten des Kontextknotens |
node() | Wählt alle Unterelemente des Kontextknotens, unabhängig von ihrem Knotentyp |
local-name() | Gibt einen String zurück mit dem lokalen Namen des ersten Knotens eines gegebenen Satzes an Knoten |
para[1] | Wählt das erste para Unterelement des Kontextknotens |
para[last()] | Wählt das letzte para Unterelement des Kontextknotens |
chapter[title="Einleitung"] | Wählt das untergeordnete Kapitel des Kontextknotens, der einen oder mehrere Untertitel mit dem String = Einleitung hat |
chapter[title] | Wählt die untergeordneten Kapitel des Kontextknotens, der einen oder mehrere Untertitel hat |
para[@type="Warnung"] | Wählt alle Unterelemente des Kontextknotens, der ein Attribut "type" mit dem Wert "Warnung" hat |
para[@type="Warnung"][5] | Wählt das fünfte Unterelement des Kontextknotens, der ein Attribut "type" mit dem Wert "Warnung" hat |
para[5][@type="Warnung"] | Wählt das fünfte Unterelement des Kontextknotens, wenn dieses Unterelement ein Attribut "type" mit dem Wert "Warnung" hat |
para[contains(@type,'bg')] | Wählt alle Unterelemente des Kontextknotens, die ein Attribut "type" mit dem String "bg" enthalten |
//title | //price | Wählt alle Elemente title und price im Dokument |
Hinweis zur Kompatibilität: Ab v18 R3 ist die XPath Implementation in 4D nicht mehr konform. Zur Wahrung der Kompatibilität wird in konvertierten Anwendungen standardmäßig die bisherige Implementation beibehalten. Um die erweiterten Features in Ihren konvertierten Anwendungen zu nutzen, müssen Sie auf der Seite Kompatibilität die Option Verwende Standard XPath aktivieren.
Hinweis: Suchläufe berücksichtigen Klein- und Großschreibung.
Die Funktion gibt die XML Referenz auf das gesuchte Element zurück. Ist das Array arrElementRefs übergeben, füllt die Funktion es mit der Liste der gefundenen XML Referenzen und gibt als Ergebnis das erste Element des Array zurück. Dieser Parameter ist hilfreich, wenn an der Stelle, definiert durch den Parameter xPath, mehrere Elemente mit demselben Namen existieren.
Nehmen wir folgende XML Struktur:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
Mit dieser Anweisung können Sie rasch nach einem XML Element suchen und seinen Wert anzeigen:
vElemRef:=DOM Parse XML source("books.xml")
vFound:=DOM Find XML element(vElemRef;"book[2]/title") //relative path from current node
DOM GET XML ELEMENT VALUE(vFound;value)
ALERT("The value of the element is: \""+value+"\"") //Learning XML
Dieselbe Suche lässt sich auch folgendermaßen ausführen:
vElemRef:=DOM Parse XML source("books.xml")
vFound:=DOM Find XML element(vElemRef;"/bookstore/book[2]") //absolute path from root
vFound:=DOM Find XML element(vFound;"title")
DOM GET XML ELEMENT VALUE(vFound;value)
ALERT("The value of the element is: \""+value+"\"") //Learning XML
Wir gehen von folgender XML Struktur aus:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <Root>
<Elem1>
<Elem2>aaa</Elem2>
<Elem2>bbb</Elem2>
<Elem2>ccc</Elem2>
</Elem1>
</Root>
Der folgende Code schreibt die Referenz auf jedes Element Elem2 in Array arrAfound:
vElemRef:=DOM Parse XML source("example.xml")
ARRAY TEXT(arrAfound;0)
vFound:=DOM Find XML element(vElemRef;"/Root/Elem1/Elem2";arrAfound)
Alle "rect" Elemente mit Attribut "class" wählen, das den String "bgcontainer" enthält:
$node:=DOM Find XML element($root;" //rect[contains(@class,'bgcontainer')")
Bei korrekt ausgeführtem Befehl wird die Systemvariable OK auf 1 gesetzt, sonst auf 0 (Null) und ein Fehler wird zurückgegeben.
Ein Fehler wird zurückgegeben, wenn:
Produkt: 4D
Thema: XML DOM
Nummer:
864
Geändert: 4D v11 SQL
4D Programmiersprache ( 4D v20 R7)