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.