El lenguaje de marcado extensible (XML) es un formato de texto sin formato que se utiliza para almacenar datos estructurados. XML está escrito para ser legible tanto por humanos como por máquinas.
Los documentos XML a menudo comienzan con una declaración, como se muestra aquí:
<?xml version="1.0" encoding="utf-8"?>
El Seleccionar-Xml El comando se puede usar para buscar documentos XML usando el lenguaje de consulta XPath. PowerShell v3 y versiones posteriores también incluyen un cmdlet Select-Xml. Este cmdlet está diseñado para buscar texto dentro de una cadena XML o dentro de un documento XML. Específicamente, está diseñado para ejecutar consultas XPath.
En este tutorial de Powershell sobre XML, analizaremos cómo buscar XML y extraer nodos específicos mediante la búsqueda de atributos XML. Usaremos el cmdlet select-Xml para hacer esto, sin embargo, la consulta XPath estaría en un nivel de atributo. Usando los ejemplos proporcionados en este tutorial, debería poder consultar fácilmente datos XML en Powershell y usar los valores de salida.
1. XML de entrada con atributos
Utilice el siguiente XML de entrada para este tutorial:
<Details> <department count="10"> <ID>10</ID> <dname>Administration</dname> <manager>200</manager> <location>1700</location> <revenue>77</revenue> </department> <department count="20"> <ID>20</ID> <dname>Marketing</dname> <manager>201</manager> <location>1800</location> <revenue>50</revenue> </department> </Details>
2. Cargue el XML en PowerShell
Cargaremos el XML directamente en PowerShell como se muestra en la siguiente ilustración:
PS C:\> $xml_attributes=@" >> <Details> >> <department count="10"> >> <ID>10</ID> >> <dname>Administration</dname> >> <manager>200</manager> >> <location>1700</location> >> <revenue>77</revenue> >> </department> >> <department count="20"> >> <ID>20</ID> >> <dname>Marketing</dname> >> <manager>201</manager> >> <location>1800</location> >> <revenue>50</revenue> >> </department> >> </Details> >> "@ >> PS C:\>
La variable xml_attributes contiene los datos XML que podemos buscar usando el cmdlet select-Xml.
3. Buscar XML por atributos en PowerShell – XPath
Si desea enumerar todos los valores de atributos de "recuento" como ejemplo, puede hacerlo según el comando a continuación.
C:\>powershell Windows PowerShell Copyright (C) 2009 Microsoft Corporation. All rights reserved. PS C:\> Select-Xml -Content $xml_attributes -XPath '//@count' | foreach {$_.node } #text ----- 10 20
Aquí, usamos '//' para consultar directamente el atributo XML y usamos la instrucción 'foreach' para imprimir el valor en Powershell.
4. Lista de nodos XML que coinciden con el valor del atributo:ejemplo
En este caso, el requisito es enumerar todos los detalles del departamento donde el recuento coincide con 10. Puede hacerlo fácilmente haciendo coincidir el valor del atributo con 10 en XPath e imprimiendo el resultado. El comando Powershell para hacer esto se proporciona a continuación:
PS C:\> Select-Xml -Content $xml_attributes -XPath '//department[@count="10"]' | foreach {$_.node} count : 10 ID : 10 dname : Administration manager : 200 location : 1700 revenue : 77
Resumen
XML es fácil de trabajar. Se puede utilizar para la configuración y el almacenamiento de datos. Ha visto cómo configurar manualmente un documento inicial, cargarlo en el shell y enumerar sus elementos. XPath se puede utilizar para navegar o buscar un documento XML. PowerShell (y .NET) usa XPath 1.0.