Modificar el contenido del archivo XML mediante el script de PowerShell

MD Aminul Islam 20 junio 2023
  1. Método 1: Usa la posición del niño
  2. Método 1: Usa la ID
  3. Método 3: Usa settings.skinsettings.setting
Modificar el contenido del archivo XML mediante el script de PowerShell

El XML, también conocido como Lenguaje de marcado extensible, se utiliza principalmente para representar información estructurada como documentos, datos, libros, etc., utilizando un formato simple basado en texto.

Este artículo demuestra cómo podemos modificar un archivo XML utilizando el script de PowerShell. Además, veremos ejemplos y explicaciones necesarios para que el tema sea fácil de entender.

Supongamos que tenemos un archivo XML con el siguiente contenido.

<settings>
  <setting id="LocationOne" value="Dhaka, Bangladesh" />
  <setting id="LocationTwo" value="zmw:00000.1.08181" />
</settings>

Ahora vamos a modificar el archivo XML anterior usando tres métodos.

Método 1: Usa la posición del niño

Si conoce la posición del hijo del padre específico, puede modificar fácilmente el valor del nodo hijo en particular. Para este propósito, podemos seguir el ejemplo de código que se muestra a continuación.

$xml=[xml](Get-Content "G:\PowerShell\Myxml.xml")
$xml.settings.ChildNodes.Item(0).value = "New York, USA"
$xml.Save("G:\PowerShell\Myxml.xml")

En nuestro ejemplo anterior, primero leemos el contenido del archivo XML y luego encontramos el nodo secundario usando su posición. Aquí, los ChildNodes se utilizan para encontrar el nodo secundario, y seleccionamos el elemento secundario específico usando Item(0).

Por último guardamos el archivo XML modificado usando la línea $xml.Save("G:\PowerShell\Myxml.xml"). Después de ejecutar el script, verá el siguiente contenido dentro de su archivo XML.

<settings>
  <setting id="LocationOne" value="New York, USA" />
  <setting id="LocationTwo" value="zmw:00000.1.08181" />
</settings>

Método 1: Usa la ID

También podemos modificar el archivo XML utilizando el id de un elemento específico. Aquí, el id se usa principalmente para elegir el nodo secundario en particular. Puede usar este método para modificar el archivo XML siguiendo el ejemplo que se comparte a continuación:

$xml=[xml](Get-Content "G:\PowerShell\Myxml.xml")
$xml.settings.SelectSingleNode("//setting[@id='LocationOne']").value = "New York, USA"
$xml.Save("G:\PowerShell\Myxml.xml")

Al igual que nuestro ejemplo anterior, primero leemos el contenido del archivo XML. Después de eso, identificamos y elegimos el nodo secundario específico usando SelectSingleNode("//setting[@id='LocationOne']") y cambiamos su valor usando value.

Por último guardamos el archivo XML modificado usando la línea $xml.Save("G:\PowerShell\Myxml.xml"),
ahora, después de ejecutar el script anterior, verá el siguiente contenido dentro de su archivo XML.

<settings>
  <setting id="LocationOne" value="New York, USA" />
  <setting id="LocationTwo" value="zmw:00000.1.08181" />
</settings>

Método 3: Usa settings.skinsettings.setting

Puede seguir este ejemplo si un nodo principal contiene un único nodo secundario. Para entender este método, supongamos que tenemos un archivo XML con el siguiente contenido.

<settings>
  <skinsettings>
    <setting type="bool">false</setting>
  </skinsettings>
</settings>

Mire nuestro ejemplo a continuación, donde modificamos el archivo XML compartido anteriormente usando este método. El código de nuestro ejemplo será el siguiente:

$xml=[xml](Get-Content "G:\PowerShell\Myxml.xml")
$xml.settings.skinsettings.setting."#text" = "true"
$xml.Save("G:\PowerShell\Myxml.xml")

En el ejemplo anterior, después de leer el contenido del archivo XML, elegimos el nodo secundario específico usando la línea settings.skinsettings.setting.

Por último guardamos el archivo XML modificado usando la línea $xml.Save("G:\PowerShell\Myxml.xml"). Puede usar este método para modificar el archivo XML siguiendo el ejemplo compartido a continuación:

<settings>
  <skinsettings>
    <setting type="bool">true</setting>
  </skinsettings>
</settings>

Tenga en cuenta que los códigos de ejemplo que se comparten aquí solo se pueden ejecutar en el entorno de Windows PowerShell.

MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn

Artículo relacionado - PowerShell XML