Saltar para o conteúdo principal
Versão: 20 R7 BETA

DOM Find XML element

DOM Find XML element ( refElemento ; xPath {; arrRefElementos} ) -> Resultado

ParâmetroTipoDescrição
refElementoTextReferência de elemento XML
xPathTextRota XPath do elemento a procurar
arrRefElementosText arrayLista de referências de elementos encontradas (se aplicável)
ResultadoTextReferência do elemento encontrado (se aplicável)

Descrição

O comando DOM Find XML element permite buscar os elementos XML específicos em uma estrutura XML. A pesquisa começa pelo elemento determinado pelo parâmetro refElemento.

O nó XML a buscar está definido pelo parâmetro xPath, expresso em notação XPath (para saber mais ver a seção Uso da notação XPathn (DOM)).). Podem ser usadas as expressões de rota abaixo

ExpressãoAção
nodenameSeleciona todos os nodos filhos de nodo de contexto com o nome "nodename"
/Seleciona os nodos do nodo raíz (rota absoluta)
//Seleciona os nodos no documento do nodo atual que coincidem com a seleção sem importar onde são encontrados
@Seleciona atributos
.Seleciona o nodo atual
..Seleciona o pai do nodo atual
*Seleciona todos os elementos filhos do nodo de contexto
@*Seleciona todos os atributos do nodo de contexto
text()Seleciona todos os atributos do nodo de contexto
node()Seleciona todos os filhos do nodo de contexto, sem importar o tipo de nodo
local-name()Devolve uma string que representa o nome local do primeiro nodo de um conjunto de nodos dado
para[1]Seleciona o primeiro filho "para" do nodo de contexto
para[last()]Seleciona o último filho secundário do nodo de contexto
chapter[title="Introduction"]Seleciona os capítulos filhos de nodo de contexto que têm um ou mais filhos títulos com um valor de string igual a Introduction
chapter[title]Seleciona os capítulos filhos do nodo de contexto que tenham um ou mas filhos "títulos"
para[@type="warning"]Seleciona todos os filhos "para" do nodo de contexto que tenham um atributo "type" com o valor "warning"
para[@type="warning"][5]Seleciona o quinto filho secundario do nodo de contexto que tenha um atributo "type" com o valor "warning"
para[5][@type="warning"]Seleciona o quinto filho secundario do nodo de contexto se esse filho tiver um atributo "type" com o valor "warning"
//title | //priceSeleciona todos os elementos de título e preço no documento

Nota de compatibilidade: **a partir de v18 R3, a implementação XPath é mais compatível e permite a compatibilidade das expressões anteriores. Por razões de compatibilidade, a implementação não padrão anterior é mantidade de forma pré-determinada nos bancos de dados convertidos. Se quiser se beneficiar das funções estendidas em seus bancos de dados convertidos, deve selecionar a opção de compatibilidade Utilizar XPath de Página Compatibilidade.

Nota: as pesquisas diferenciam entre maiúsculas e minúsculas.

O comando devolve a referência XML dos elementos encontrados. Quando passar o array de strings arrRefElement, o comando o preenche com a lista de referências XML encontradas. Neste caso, o comando devolve o primeiro elemento de array arrRefElement como resultado. Este parâmetro é útil quando existirem vários elementos com o mesmo nome no local especificado pelo parâmetro xRuta.

Exemplo 1

Este exemplo permite buscar rapidamente um elemento XML e mostrar seu valor:

 vEncontrado:=DOM Find XML element(vRefElem;"Items/Book[15]/Title")
 DOM GET XML ELEMENT VALUE(vEncontrado;valor)
 ALERT("O valor do elemento é: \""+valor+"\"")

A mesma pesquisa também pode ser realizada desta forma:

 vEncontrado:=DOM Find XML element(vElemRef;"Items/Book[15]")
 vEncontrado:=DOM Find XML element(vEncontrado;"Book/Title")
 DOM GET XML ELEMENT VALUE(vEncontrado;valor)
 ALERT("O valor do elemento é: \""+valor+"\"")

Nota: Como é mostrado no exemplo anterior, a rota XPath deve sempre começar pelo nome do elemento atual. Esta precisão é importante quando maneja rotas XPath relativas.

Exemplo 2

Dada a seguinte estrutura XML:

         aaa      bbb      ccc   

O código abaixo permite recuperar a referência de cada elemento Elem2 no array arrEncontrados:

 vElemRef:=DOM Parse XML source("example.xml")
 ARRAY TEXT(arrAfound;0)
 vFound:=DOM Find XML element(vElemRef;"/Root/Elem1/Elem2";arrAfound)

Exemplo 3

Se quiser selecionar todos os elementos "rect" com atributos "class" que contenham a string "bgcontainer":

 $node:=DOM Find XML element($root;" //rect[contains(@class,'bgcontainer')")

Variáveis e conjuntos do sistema

Se o comando for executado corretamente, a variável sistema OK assume o valor1. Do contrário, assume o valor 0 e um erro é gerado.

Gestão de erros

Um erro é gerado quando:

  • O elemento de referência é inválido
  • A rota xPath especificada é inválida.

Ver também

DOM Count XML elements
DOM Create XML element