Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v20 R7
DOM Find XML element

DOM Find XML element 


 

DOM Find XML element ( ElementRef ; xPath {; arrElementRefs} ) -> Funktionsergebnis 
Parameter Typ   Beschreibung
ElementRef  String in Referenz auf XML Element
xPath  Text in Pfad xPath auf das zu suchende Element
arrElementRefs  Array String in Liste der gefundenen Element Referenzen (falls zutreffend)
Funktionsergebnis  String in 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: 

AusdruckAktion
nodenameWä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 | //priceWä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:

  • Die Referenz auf das Element ungültig ist
  • Der angegebene Pfad x Path ungültig ist.



Siehe auch 

DOM Count XML elements
DOM Create XML element

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: XML DOM
Nummer: 864

Dieser Befehl ändert die Systemvariable OKDieser Befehl ändert die Systemvariable ErrorDieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

Geändert: 4D v11 SQL

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v20 R7)