Comando
XmlNodeList()
Seleciona um conjunto de nós XML por uma expressão XPath e carrega o XML externo de cada nó em uma variável de lista. Utilizado como fonte de dados para o Foreach(), iterando nó por nó.
Propriedades disponíveis dentro do Foreach:
Os namespaces XML são removidos automaticamente (sem necessidade de prefixos nas expressões XPath). O XPath é avaliado a partir do elemento raiz (DocumentElement). Use funções como GetXmlNodeText() para extrair valores de sub-elementos do
Propriedades disponíveis dentro do Foreach:
$variavel.Count: total de nós encontrados pelo XPath$variavel.$Item: XML externo completo do nó atual (OuterXml), incluindo a tag do nó e seu conteúdoOs namespaces XML são removidos automaticamente (sem necessidade de prefixos nas expressões XPath). O XPath é avaliado a partir do elemento raiz (DocumentElement). Use funções como GetXmlNodeText() para extrair valores de sub-elementos do
$Item.
XmlNodeList(variavel, xml, xpath)
Parâmetros
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
variavel | Sim | Nome da variável de lista. Deve começar com $. Ex: $nos. |
xml | Sim | String contendo o XML completo a processar. Os namespaces XML são removidos automaticamente antes do parse. |
xpath | Sim | Expressão XPath para selecionar os nós. Avaliada a partir do elemento raiz do XML. Ex: '//item', 'pedidos/pedido', '//nota[@tipo=\'entrada\']'. |
Exemplos
// XML de NF-e: iterar produtos de uma nota fiscal:
string $xmlNota = GetFileText(@'C:\nfes\nota.xml')
XmlNodeList($produtos, $xmlNota, '//det')
Output('Total de produtos: ' + $produtos.Count)
Foreach ($produtos) {
// $produtos.$Item contém o XML externo do nó <det>...</det>
string $descricao = GetXmlNodeText($produtos.$Item, '//xProd')
string $quantidade = GetXmlNodeText($produtos.$Item, '//qCom')
string $valor = GetXmlNodeText($produtos.$Item, '//vProd')
Output($descricao + ' x' + $quantidade + ' = R$ ' + $valor)
}
// Iterar elementos de uma resposta SOAP/REST XML:
XmlNodeList($itens, $respostaXml, '//resultados/item')
Foreach ($itens) {
string $id = GetXmlNodeText($itens.$Item, '//id')
string $status = GetXmlNodeText($itens.$Item, '//status')
AthusDBUpdate('tbc_MSL6000', '$status', 'id='+$id)
}