flysmog.pages.dev

Como criar um script PowerShell para ler XML e extrair atributos?

Extrair dados de arquivos XML pode ser uma tarefa trabalhosa se feita manualmente, especialmente quando se trata de grandes volumes de informações. Utilizar o PowerShell para automatizar este processo é uma solução rápida, confiável e altamente eficiente, permitindo que você acesse e manipule atributos específicos de forma precisa.

Pré-requisitos

Passo 1: Carregar o arquivo XML no PowerShell

O primeiro passo é carregar o conteúdo do arquivo XML em uma variável do PowerShell. Utilize o cmdlet Import-Clixml para arquivos serializados ou o método [xml] para arquivos XML padrão.

$xmlContent = [xml](Get-Content -Path "C:\caminho\arquivo.xml")

Passo 2: Navegar pela estrutura XML

Após carregar o arquivo, você pode navegar pela sua estrutura usando notação de ponto. Por exemplo, se o XML contém elementos aninhados, acesse-os sequencialmente.

$rootElement = $xmlContent.DocumentElement

Passo 3: Extrair atributos específicos

Para extrair atributos de um elemento, utilize a propriedade Attributes. Você pode acessar o valor de um atributo específico pelo seu nome.

$elemento = $rootElement.ElementoFilho
$atributoValor = $elemento.Attributes["nomeDoAtributo"].Value
Write-Output "O valor do atributo é: $atributoValor"

Passo 4: Processar múltiplos elementos

Se o XML contém uma lista de elementos repetidos, use um loop foreach para extrair atributos de cada um deles.

$elementos = $rootElement.ElementosRepetidos
foreach ($elemento in $elementos) {
    $id = $elemento.Attributes["id"].Value
    $nome = $elemento.Attributes["nome"].Value
    Write-Output "ID: $id - Nome: $nome"
}

Exemplo Prático

Considere o seguinte arquivo XML de exemplo:

<Produtos>
  <Produto id="001" nome="Caneta" preco="2.50" />
  <Produto id="002" nome="Caderno" preco="12.00" />
</Produtos>

O script PowerShell para extrair os atributos seria:

$xml = [xml](Get-Content -Path "produtos.xml")
$produtos = $xml.Produtos.Produto

foreach ($produto in $produtos) {
    $id = $produto.Attributes["id"].Value
    $nome = $produto.Attributes["nome"].Value
    $preco = $produto.Attributes["preco"].Value
    Write-Output "ID: $id, Nome: $nome, Preço: R$ $preco"
}

Tabela com dados de entrada e saída esperada:

Dado de Entrada (XML) Saída Esperada (PowerShell)
<Produto id="001" nome="Caneta" preco="2.50" /> ID: 001, Nome: Caneta, Preço: R$ 2.50
<Produto id="002" nome="Caderno" preco="12.00" /> ID: 002, Nome: Caderno, Preço: R$ 12.00

Conclusão

Com este método, você automatiza a extração de atributos de arquivos XML em segundos, evitando erros manuais e garantindo consistência nos dados processados. O PowerShell oferece uma abordagem poderosa e flexível para lidar com estruturas XML complexas, tornando seu fluxo de trabalho muito mais eficiente.