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
- Acceso de lectura/escritura de datos a la manera de estructuras y vectores de lenguajes imperativos mayoritarios.
- Ubicación a nivel de rutas relativas o rutas absolutas.
- Posibilidad de crear y leer atributos de las etiquetas.
- Funciones de busqueda sobre el XML a nivel de contenidos e información.
- Trabajo con Nodos y Atributos.
- Formateo del XML en texto identado.
- Funciones de creación y borrado de dominios y etiquetas.
- Funciones que permiten contar etiquetas dentro de un dominio.
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
- Descargar e instalar la biblioteca libbslxml. Las instrucciones de como hacer esto las puede encotrar aqui
- Descargar el paquete
- Descomprimir el paquete
- Entrar en el directorio y Hacer configure
- Compilar
- Para instalar el programa, ejecutar como superusuario
- Para descargar pulsa aquí
tar xzf xmlmanage-0.1.tar.gz
cd xmlmanage-0.1
./configure
make
make install
Instalación de Paquetes Debian
- Descargar e los siguientes paquetes debian
- 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.cpusY para leerlo algo similar a:
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
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
