PowerShell ofrece varias formas de leer documentos XML, sin necesidad de escribir mucho código ni usar XPath. Así es como puedes empezar.
Manipular XML es uno de esos temas que hace que cualquiera que lo haya hecho se estremezca. Por lo general, lleva mucho tiempo, es difícil de entender y es solo un dolor general en el trasero. Jugar con XML en otros lenguajes además de PowerShell requiere esencialmente memorizar el árbol XML para asegurarse de que está manipulando el nodo correcto en el nivel correcto. Además de eso, probablemente también tendrá que aprender a escribir consultas XPath oscuras para encontrar el contenido en un documento XML.
PowerShell y la lectura de archivos XML
PowerShell sigue teniendo XPath, pero no necesariamente tiene que usarlo. PowerShell proporciona una forma sencilla de leer archivos XML, manipularlos y, finalmente, guardarlos en el disco sin necesidad de escribir mucho código ni conocer XPath. Para ello, PowerShell proporciona la notación de puntos de usuario para indicar cada nodo del documento XML. Pero primero, comencemos a leer un documento XML.
Una forma de leer un documento XML en PowerShell es encasillar una variable en el tipo . Para crear esta variable, podemos usar el cmdlet Get-Content para leer todo el texto de un documento XML. Para encasillar la salida de Get-Content, simplemente podemos anteponer el texto antes de la variable. Esto indica a PowerShell que necesitamos esta variable encasillada como Sistema.XML.Tipo XmlDocument en lugar del tipo de matriz predeterminado que normalmente viene de Get-Content.
X XmlDocument = Get-Content-Path C:Cars.xml
En este artículo, usaremos un archivo XML llamado Cars.xml como ejemplo, que contiene varias marcas y modelos de automóviles.
Una vez que haya ejecutado Get-Content para leer el texto sin procesar del documento XML y convertir la salida al sistema de tipo.XML.XmlDocument, ahora tiene una variable llamada X XmlDocument que contiene todo el árbol de nodos XML que representa ese documento.
En este punto, la lectura del documento es una tarea trivial debido a la notación de puntos mencionada anteriormente. Como ahora tenemos el documento XML en memoria, podemos explorar el árbol.
Observe cómo podemos profundizar más en el documento utilizando la notación de puntos? Si encontramos un punto en el documento que contiene un nodo de tipo similar (Cars), podemos tratarlo como una matriz de PowerShell y especificar un número de índice del nodo que estamos buscando. En este caso, estamos encontrando el primer automóvil en el documento especificando el número de índice de 0.
Supongamos que desea encontrar todos los coches en este documento XML que tienen cuatro o más asientos. Con el simple uso del cmdlet Where-Object común de PowerShell, podemos recuperar fácilmente esa información.
Combinación de nodos
¿Observa que PowerShell combina los nodos (elementos) y los atributos XML en un solo conjunto? Esto le permite peinar fácilmente el documento con solo usar la notación de puntos y el cmdlet Where-Object. PowerShell conoce todos los atributos y subelementos que están asociados a cada XML principal y los muestra en una bonita tabla, de forma predeterminada.
Le hemos mostrado un método con el que puede leer documentos XML. Una de las cosas buenas de PowerShell es que puede ser tan fácil o tan difícil como quieras que sea. Le mostramos cómo encontrar nodos en un documento XML mediante notación de puntos. Si alguna vez tiene la necesidad de realizar búsquedas más avanzadas, le sugerimos que estudie el uso de cmdlets como Select-Xml para crear consultas más potentes. De cualquier manera, PowerShell le permitirá leer y encontrar casi cualquier cosa de un documento XML. El resto depende de ti.