xmltree — u_pbt_xmltree #
← Komponentenreferenz · Inhalt des Handbuchs
xmltree zeigt einen XML-Wert als einklappbaren Baum, farbcodiert: ein Konfigurationsbildschirm, eine API-Antwort, ein Integrations-Debug. Sie setzen den XML-Text in
is_xml, die Komponente zeigt ihn; ein Klick auf einen Knoten meldet seinen Pfad (ue_node_clicked), ungültiges XML löstue_erroraus. Sie ändert nichts: sie ist ein BETRACHTER.
▶ Live sehen — Demoanwendung, Kachel XML tree, mit dem Code und dieser Seite nebeneinander.
Auf einen Blick #
| Userobject | u_pbt_xmltree |
| Eingabe | Der XML-Text, in is_xml (eine Zeichenkette) |
| Ein-/Ausklappen | Jeder Container über seinen Pfeil, oder alle auf einmal (of_expand_all, of_collapse_all) |
| Rückmeldung | Ein Klick auf einen Knoten gibt seinen Pfad (ue_node_clicked); ungültiges XML löst ue_error aus |
Schnellstart #
// Show an XML response as a tree
uo_xml.is_xml = inv_rest.of_response_text()
// Fold everything, then let the user open what interests them
uo_xml.of_collapse_all()
// ue_node_clicked : the path of the node clicked ("/order/lines/line[2]/@sku")
// -> an attribute node is .../@name
Eigenschaften #
| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
is_xml | string | "" | Der anzuzeigende XML-Text. Ein Objekt, ein Array, ein Wert; als Baum gelesen und gezeigt. Leer löscht den Baum; ungültiges XML löst ue_error aus und zeigt nichts |
ib_wrap | boolean | true | Lange Zeilen brechen um (true, Standard) oder bleiben mit horizontaler Bildlaufleiste auf einer Zeile (false) — ein Code-Editor-Gefühl |
ib_search_enabled | boolean | true | Strg+F im Baum öffnet ein Suchfeld — dieselbe Suche wie of_search: Tippen hebt hervor, Enter nächster, Umschalt+Enter vorheriger, Esc schließt. false überlässt das Kürzel einer Anwendung, die aus ihrem eigenen Feld sucht |
is_theme_style | string | fluent | Visueller Stil der Komponente (Konstanten THEME_STYLE_*) |
is_theme_mode | string | light | Helle oder dunkle Variante (Konstanten THEME_MODE_*) |
il_theme_accent | long | -1 | Akzentfarbe dieser Komponente (-1 = Akzent des Designs) |
is_tooltip | string | "" | Einfacher Tooltip beim Überfahren der Komponente |
is_super_tooltip_title | string | "" | Titel des erweiterten Tooltips (hat Vorrang vor is_tooltip) |
is_super_tooltip_text | string | "" | Text des erweiterten Tooltips (Rich-Markup zulässig) |
is_super_tooltip_image | string | "" | Bild des erweiterten Tooltips |
Methoden #
| Methode | Beschreibung |
|---|---|
of_expand_all ( ) → long | Klappt jeden Container auf. Gibt 0 zurück, -1 wenn die Komponente nicht erzeugt ist |
of_collapse_all ( ) → long | Klappt jeden verschachtelten Container ein (die oberste Ebene bleibt sichtbar). Gibt 0 zurück, -1 wenn die Komponente nicht erzeugt ist |
of_clear ( ) → long | Leert den Baum (wie is_xml = ""). Gibt 0 zurück, -1 wenn die Komponente nicht erzeugt ist |
of_expand_to_level ( long al_level ) → long | Zeigt den Baum bis al_level: Elemente in dieser Tiefe oder tiefer klappen zu (1 = die direkten Kinder der Wurzel, 0 klappt die Wurzel) |
of_search ( string as_query ) → long | Hebt jedes Vorkommen hervor (ohne Groß/Klein) und springt zum ersten, öffnet jeden eingeklappten Vorfahren; ue_search_result sagt wie viele. Eine leere Anfrage löscht die Suche. Das Suchfeld öffnet sich mit der Anfrage darin und dem Fokus darauf (dasselbe wie Strg+F): Eingabe springt zum nächsten Treffer; mit ib_search_enabled auf false hebt der Baum nur hervor |
of_search_next ( ) → long | Springt zum NÄCHSTEN Treffer (nach dem letzten wieder zum ersten); ue_search_result meldet die neue Position |
of_search_prev ( ) → long | Springt zum VORHERIGEN Treffer (vor dem ersten wieder zum letzten); ue_search_result meldet die neue Position |
of_clear_search ( ) → long | Verwirft die Suche: keine Hervorhebung und kein aktueller Treffer mehr (of_match_count liefert 0), das Suchfeld wird geleert und geschlossen |
of_select_path ( string as_path ) → long | Wählt die Zeile bei as_path und scrollt hin, OHNE ein Ereignis auszulösen (die App hat es gesteuert) |
of_selected_path ( ) → string | Der Pfad der gewählten Zeile, LIVE gelesen (/r/b/c, /r/a/@id) — was ein Kopieren-Knopf kopiert. Leer, wenn nichts gewählt ist |
of_selected_value ( ) → string | Der Text der gewählten Zeile, wenn sie ein BLATT ist (der Text eines Elements, der Wert eines Attributs), LIVE gelesen. Leer bei einem Container-Element oder ohne Auswahl |
of_match_count ( ) → long | Liefert, wie viele Treffer die aktuelle Suche fand, LIVE gelesen — die 12 einer Statuszeile 3 / 12. 0 ohne Suche |
of_match_index ( ) → long | Liefert die 1-basierte Position des aktuellen Treffers, LIVE gelesen — die 3 einer Statuszeile 3 / 12. 0 ohne Treffer |
Ereignisse #
| Ereignis | Wann |
|---|---|
ue_node_clicked (string as_path) | Der Benutzer hat einen Knoten angeklickt: sein Zugriffspfad (/order/lines/line[2]/@sku), in Ihren Daten nachzulesen |
ue_selection_changed (string as_path) | Die gewählte Zeile hat sich per TASTATUR geändert (Pfeile, Pos1/Ende) — ein Mausklick meldet ue_node_clicked |
ue_search_result (long al_count, long al_index) | Eine Suche lief oder bewegte sich: al_count Treffer insgesamt, der aktuelle ist al_index (1-basiert, 0 wenn keiner) — für eine Anzeige „3 / 12“ |
ue_error (string as_message) | Der Text in is_xml ist kein gültiges XML: die Meldung sagt warum, der Baum bleibt leer |
Beispiel #
Eine API-Antwort erkunden #
if inv_rest.of_get("https://api.example.com/orders/4152") = 200 then
uo_xml.is_xml = inv_rest.of_response_text()
uo_xml.of_collapse_all() // the reader opens what interests them
else
uo_xml.of_clear()
end if
Bewährte Praxis #
- Es ist ein Betrachter, kein Editor: er zeigt das XML, er ändert es nicht. Um einen Wert zu lesen, nehmen Sie den Pfad aus
ue_node_clickedund holen ihn in Ihren eigenen Daten. - Ein großes XML klappt ein: erst
of_collapse_all, der Leser öffnet, was ihn interessiert — tausend gleichzeitig offene Knoten sind unlesbar. - Ungültiges XML bricht nichts:
ue_errorsagt es, der Baum bleibt leer. Das ist die zu zeigende Rückmeldung, kein Absturz.
Vom gemeinsamen Sockel geerbt #
Diese Mitglieder gibt es bei jeder visuellen Komponente — sie sind nicht dieser eigen. Sie werden einmal in den übergreifenden Kapiteln beschrieben; diese Tabelle sagt nur, wo man sie liest.
| Mitglieder | Rolle | Beschrieben in |
|---|---|---|
of_reset | Die Komponente zurücksetzen | 3.6 Eine Komponente zurücksetzen: of_reset() |
of_register_shortcut · of_clear_shortcuts | Tastenkürzel der Komponente | 3.5 Tastenkombinationen |
of_is_created · of_is_ready · of_get_last_error | Ob sie entstanden ist, ob sie bereit ist, was fehlschlug | 3.7 Diagnose |
of_save_as_png · of_save_as_jpg | Die Darstellung als Bild exportieren | 3.8 Die Darstellung als Bild exportieren |
of_set_redraw | Änderungen zu einem einzigen Neuzeichnen bündeln | 3.10 Best Practices |
of_preload_icons | Symbole ohne Verzögerung | Sofortige Anzeige: of_icon |
of_set_translation | Eine Beschriftung der Komponente übersetzen | 5.2 Eine Beschriftung anpassen: of_set_translation |
of_focus_webview | Der Komponente den Fokus geben | 6.4 Tastatur und Fokus |
of_print · of_print_to_pdf | Drucken oder ein PDF schreiben | 6.9 Drucken |
of_set_property · of_get_property · of_component_name | Eine Eigenschaft über ihren Namen steuern | 3.1 Die Eigenschaften-Engine |