XmlManage

En muchos de los casos tener una biblioteca simple no es suficientemente flexible. Por ejemplo, para escribir partes de configuración en un XML sacada directamente de /proc, o diálogos sencillos en ncurses que quieran modificar los datos, un script es lo más sencillo y lo más utilizado en Unix. El problema es que trabajar con ese XML debería ser suficientemente sencillo.

Para trabajar sobre esos datos de manera similar a como lo hacemos con libbslxml, pero haciendo uso de scripts, hemos creado XmlManage. Se trata de un programa de línea de comando que permite utilizar de una manera flexible, dentro de las posibilidades de la línea de comando, todas las funcionalidades que se proveen en libbslxml. Esto nos evita la necesidad de usar awk o alguna otra forma de tratamiento de texto para manejar el XML y nos asegura que el fichero XML estará siempre en un estado correcto.

Caracteristicas

Instalación

XmlManage depende de libbslxml, es por esto que para compilar este programa es necesario compilar e instalar antes la biblioteca. Tambien se dispone de la opcion de instalar paquetes deb para aquellos que usen Debian. Tendran que instalar los dos paquetes correspondientes a la biblioteca y XmlManage

Instalación de fuentes

  1. Descargar e instalar la biblioteca libbslxml. Las instrucciones de como hacer esto las puede encotrar aqui
  2. Descargar el paquete
    • Para descargar pulsa aquí

  3. Descomprimir el paquete
  4. tar xzf xmlmanage-0.1.tar.gz     
  5. Entrar en el directorio y Hacer configure
  6. cd xmlmanage-0.1
    ./configure
  7. Compilar
  8. make     
  9. Para instalar el programa, ejecutar como superusuario
  10. make install

Instalación de Paquetes Debian

  1. Descargar e los siguientes paquetes debian

  2. Para instalar el programa y la biblioteca libbslxml, ejecutar como superusuario
    • dpkg -i libbslxml_0.1-1_i386.deb xmlmanage_0.1-0_i386.deb

Modo de uso

carlos@napsis:~$ xmlmanage --help
xmlmanage manage XmlFiles. Its Designed to manage Xml from scripts, to use it at
programs use the libbslxml.xmlmanage has three actions, READ, WRITE and LIST
the first mode will read a value of a xmlNode, the second will write a value, list will list the xml
at the given domain. To obtain help of how to use this commands type : xmlmanage -h [command]

-h --help will show this help
-h [command] show the usage of this command
-r --read XML_FILE DOMAIN
-d --delete XML_FILE DOMAIN
-w --write XML_FILE DOMAIN VALUE
-l --list XML_FILE [DOMAIN] (***Not Already implemented***)
examples:
list of the XML
xmlmanage -l net.xml
xmlmanage -list net.xml
xmlmanage show net.xml
xmlmanage l node net.xml net[0].configuration addr
xmlmanage ln net.xml net[0].configuration addr
xmlmanage l attribute net.xml net[0] '*'
reading a value from a domain
xmlmanage -r net.xml netcards.netcard.ip.addr
xmlmanage -read net.xml netcards.netcard[2].ip.mask
xmlmanage r node host.xml host[0].ip host[1].ip
xmlmanage r attribute net.xml net.device name
xmlmanage ra net.xml net.device name
writing a value from a domain
xmlmanage -w net.xml netcards.netcard.ip.addr 192.168.44.2
xmlmanage -wr net.xml netcards.netcard[2].ip.mask 255.255.255.0
xmlmanage write net.xml netcards.netcard[2].ip.mask 255.255.255.0
xmlmanage w a net.xml net.device name eth0 type ethernet
xmlmanage w node net.xml net[0] 10.0.0.0/24 net[1] 10.0.1.0/24

Ejemplos:

Estos son algunos de los ejemplos que explican mejor el uso de xmlmanage

xmlmanage w /tmp/prueba.xml hardware.cpus
xmlmanage --write /tmp/prueba.xml hardware.cpus.cpu.id 0
xmlmanage w /tmp/prueba.xml hardware.cpus.cpu.frequency 1546
xmlmanage w /tmp/prueba.xml hardware.cpus.cpu[1].id 1
xmlmanage w /tmp/prueba.xml hardware.cpus.cpu[1].frequency 2000
Y para leerlo algo similar a:
xmlmanage --list nodes /tmp/prueba.xml hardware.cpus cpu
éste daría como salida dos líneas con los nodos cpu que podrían recogerse con wc -l, para saber que son 2 y luego pasar a hacer la lectura.
xmlmanage --read /tmp/prueba.xml hardware.cpus.cpu[0].id 
xmlmanage --read /tmp/prueba.xml hardware.cpus.cpu[0].frequency