GNU/Linux >> Tutoriales Linux >  >> Linux

Buscar atributos XML PowerShell XPath

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.


Linux
  1. ¿Búsqueda sin distinción entre mayúsculas y minúsculas de nombres de archivos duplicados?

  2. Cómo analizar XML y quitar etiquetas usando ejemplos de XPATH en Linux (Cómo combinar varios comandos usando PIPE en Linux)

  3. Restablecer la posición de búsqueda del historial de bash

  4. Falta php_soap.dll en Ubuntu 16

  5. Eliminar resaltado de búsqueda de VIM

Comando Chattr en Linux (atributos de archivo)

Cómo buscar en Nano

Documentación del sistema

Buscar comando en Linux/UNIX

Búsqueda semántica:¿Siguen siendo importantes las palabras clave?

Cómo hacer una búsqueda difusa de archivos en Linux