Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com

Página Inicial

 
4D v20 R7
DOM Find XML element

DOM Find XML element 


 

DOM Find XML element ( refElemento ; xPath {; arrRefElementos} ) -> Resultado 
Parâmetro Tipo   Descrição
refElemento  String in Referência de elemento XML
xPath  Texto in Rota XPath do elemento a procurar
arrRefElementos  Array string in Lista de referências de elementos encontradas (se aplicável)
Resultado  String in Referência do elemento encontrado (se aplicável)

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.

 

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.

Dada a seguinte estrutura XML: 

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Root>
   <Elem1>
      <Elem2>aaa</Elem2>
      <Elem2>bbb</Elem2>
      <Elem2>ccc</Elem2>
   </Elem1>
</Root>

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)

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')")

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.

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

 
PROPRIEDADES 

Produto: 4D
Tema: XML DOM
Número 864

Este comando modifica a variável sistema OKEste comando modifica a variável sistema ErrorThis command can be run in preemptive processes

 
CONTEÚDO DA PÁGINA 
 
HISTÓRIA 

Modificado: 4D v11 SQL

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v20 R7)