Extensible Markup Language (XML) è un formato di testo normale utilizzato per archiviare dati strutturati. XML è scritto per essere leggibile sia dall'uomo che dalla macchina.
I documenti XML spesso iniziano con una dichiarazione, come mostrato qui:
<?xml version="1.0" encoding="utf-8"?>
Il Select-Xml Il comando può essere utilizzato per cercare documenti XML utilizzando il linguaggio di query XPath. PowerShell v3 e versioni successive includono anche un cmdlet Select-Xml. Questo cmdlet è progettato per trovare testo all'interno di una stringa XML o all'interno di un documento XML. In particolare, è progettato per eseguire query XPath.
In questo tutorial Powershell su XML, discuteremo come cercare XML ed estrarre nodi specifici, cercando attributi XML. Utilizzeremo il cmdlet select-Xml per fare ciò, tuttavia, la query XPath sarebbe a livello di attributo. Utilizzando gli esempi forniti in questo tutorial, dovresti essere in grado di eseguire facilmente query sui dati XML in Powershell e utilizzare i valori di output.
1. Inserisci XML con attributi
Utilizza il seguente codice XML di input per questo 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. Carica l'XML in PowerShell
Caricheremo l'XML direttamente in PowerShell come mostrato nell'illustrazione seguente:
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 variabile xml_attributes contiene i dati XML che possiamo cercare utilizzando il cmdlet select-Xml.
3. Cerca XML per attributi in PowerShell – XPath
Se vuoi elencare tutti i valori degli attributi "count" come esempio, puoi farlo secondo il comando seguente.
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
Qui usiamo '//' per interrogare direttamente l'attributo XML e utilizziamo l'istruzione 'foreach' per stampare il valore in Powershell.
4. Elenca i nodi XML corrispondenti al valore dell'attributo – Esempio
In questo caso, il requisito è elencare tutti i dettagli del reparto in cui il conteggio corrisponde a 10. Puoi farlo facilmente abbinando il valore dell'attributo a 10 in XPath e stampando l'output. Il comando Powershell per eseguire questa operazione è fornito di seguito:
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
Riepilogo
XML è facile da usare. Può essere utilizzato per la configurazione e la memorizzazione dei dati. Hai visto come impostare manualmente un documento iniziale, caricarlo nella shell ed enumerarne gli elementi. XPath può essere utilizzato per navigare o cercare un documento XML. PowerShell (e .NET) utilizza XPath 1.0.