xmltree — u_pbt_xmltree #
← Referência dos componentes · Índice do guia
xmltree mostra um valor XML como uma árvore recolhível, colorida: um ecrã de configuração, uma resposta de API, uma depuração de integração. Define o texto XML em
is_xml, o componente mostra-o; um clique num nó reporta o seu caminho (ue_node_clicked), um XML inválido levantaue_error. Não modifica nada: é um VISUALIZADOR.
▶ Ver ao vivo — Aplicação de demonstração, mosaico XML tree, com o código e esta página lado a lado.
Em resumo #
| Userobject | u_pbt_xmltree |
| Entrada | O texto XML, em is_xml (uma cadeia) |
| Dobrar / desdobrar | Cada contentor pelo seu chevron, ou tudo de uma vez (of_expand_all, of_collapse_all) |
| Retorno | Um clique num nó dá o seu caminho (ue_node_clicked); um XML inválido levanta ue_error |
Início rápido #
// 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
Propriedades #
| Propriedade | Tipo | Predefinido | Descrição |
|---|---|---|---|
is_xml | string | "" | O texto XML a mostrar. Um objeto, um array, um valor; lido e mostrado como árvore. Vazio limpa a árvore; um XML inválido levanta ue_error e não mostra nada |
ib_wrap | boolean | true | As linhas longas quebram (true, por omissão) ou ficam numa linha com barra horizontal (false) — um aspeto de editor de código |
ib_search_enabled | boolean | true | Ctrl+F na árvore abre uma caixa de pesquisa — a mesma pesquisa que of_search: escrever realça, Enter seguinte, Shift+Enter anterior, Esc fecha. false deixa o atalho a uma aplicação que pesquisa a partir da sua própria caixa |
is_theme_style | string | fluent | Estilo visual do componente (constantes THEME_STYLE_*) |
is_theme_mode | string | light | Variante clara ou escura (constantes THEME_MODE_*) |
il_theme_accent | long | -1 | Cor de destaque deste componente (-1 = destaque do tema) |
is_tooltip | string | "" | Tooltip simples apresentado ao passar sobre o componente |
is_super_tooltip_title | string | "" | Título do tooltip enriquecido (prevalece sobre is_tooltip) |
is_super_tooltip_text | string | "" | Texto do tooltip enriquecido (aceita marcação enriquecida) |
is_super_tooltip_image | string | "" | Imagem do tooltip enriquecido |
Métodos #
| Método | Descrição |
|---|---|
of_expand_all ( ) → long | Desdobra cada contentor. Devolve 0, -1 se o componente não estiver criado |
of_collapse_all ( ) → long | Dobra cada contentor aninhado (o nível de topo fica visível). Devolve 0, -1 se o componente não estiver criado |
of_clear ( ) → long | Esvazia a árvore (como is_xml = ""). Devolve 0, -1 se o componente não estiver criado |
of_expand_to_level ( long al_level ) → long | Mostra a árvore até al_level: os elementos a essa profundidade ou mais dobram (1 = os filhos diretos da raiz, 0 dobra a raiz) |
of_search ( string as_query ) → long | Realça cada ocorrência (sem distinção de maiúsculas) e salta para a primeira, abrindo qualquer antepassado dobrado; ue_search_result diz quantas. Uma consulta vazia limpa a pesquisa. A caixa de pesquisa abre-se com a consulta dentro e o foco nela (a mesma que Ctrl+F): Enter passa à seguinte; com ib_search_enabled a false a árvore apenas realça |
of_search_next ( ) → long | Passa à correspondência SEGUINTE (volta à primeira depois da última); ue_search_result indica a nova posição |
of_search_prev ( ) → long | Passa à correspondência ANTERIOR (volta à última antes da primeira); ue_search_result indica a nova posição |
of_clear_search ( ) → long | Descarta a pesquisa: sem realces nem correspondência atual (of_match_count devolve 0), e a caixa de pesquisa esvazia-se e fecha-se |
of_select_path ( string as_path ) → long | Seleciona e rola até à linha em as_path SEM levantar um evento (a app conduziu-o) |
of_selected_path ( ) → string | O caminho da linha selecionada, lido AO VIVO (/r/b/c, /r/a/@id) — o que um botão Copiar copia. Vazio se nada estiver selecionado |
of_selected_value ( ) → string | O texto da linha selecionada quando é uma FOLHA (o texto de um elemento, o valor de um atributo), lido AO VIVO. Vazio para um elemento contentor ou sem seleção |
of_match_count ( ) → long | Devolve quantas correspondências a pesquisa atual encontrou, lido AO VIVO — o 12 de uma barra de estado 3 / 12. 0 sem pesquisa |
of_match_index ( ) → long | Devolve a posição (1-based) da correspondência atual, lida AO VIVO — o 3 de uma barra de estado 3 / 12. 0 sem correspondência |
Eventos #
| Evento | Quando |
|---|---|
ue_node_clicked (string as_path) | O utilizador clicou num nó: o seu caminho de acesso (/order/lines/line[2]/@sku), a reler nos seus dados |
ue_selection_changed (string as_path) | A linha selecionada mudou por TECLADO (setas, Início/Fim) — um clique do rato reporta ue_node_clicked |
ue_search_result (long al_count, long al_index) | Uma pesquisa correu ou avançou: al_count correspondências no total, a atual é al_index (1-based, 0 se nenhuma) — para um « 3 / 12 » |
ue_error (string as_message) | O texto em is_xml não é um XML válido: a mensagem diz porquê, a árvore fica vazia |
Exemplo #
Explorar a resposta de uma API #
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
Boas práticas #
- É um visualizador, não um editor: mostra o XML, não o muda. Para ler um valor, pegue o caminho de
ue_node_clickede vá buscá-lo aos seus próprios dados. - Um XML grande dobra-se: primeiro
of_collapse_all, o leitor abre o que lhe interessa — mil nós abertos de uma vez é ilegível. - Um XML inválido não parte nada:
ue_errordi-lo, a árvore fica vazia. É o retorno a mostrar, não uma falha.
Herdado da base comum #
Estes membros existem em todos os componentes visuais — não são próprios deste. São detalhados uma só vez, nos capítulos transversais; esta tabela apenas diz onde os ler.
| Membros | Função | Detalhado em |
|---|---|---|
of_reset | Repor o componente a zero | 3.6 Repor um componente a zero: of_reset() |
of_register_shortcut · of_clear_shortcuts | Atalhos de teclado do componente | 3.5 Os atalhos de teclado |
of_is_created · of_is_ready · of_get_last_error | Se nasceu, se está pronto, o que falhou | 3.7 Diagnóstico |
of_save_as_png · of_save_as_jpg | Exportar a renderização como imagem | 3.8 Exportar a representação como imagem |
of_set_redraw | Agrupar as alterações num único repinte | 3.10 Boas práticas |
of_preload_icons | Ícones mostrados sem atraso | Apresentação instantânea: of_icon |
of_set_translation | Traduzir uma legenda do componente | 5.2 Adaptar uma etiqueta: of_set_translation |
of_focus_webview | Dar o foco ao componente | 6.4 Teclado e focus |
of_print · of_print_to_pdf | Imprimir, ou escrever um PDF | 6.9 Imprimir |
of_set_property · of_get_property · of_component_name | Controlar uma propriedade pelo nome | 3.1 O motor de propriedades |