El código XML:
micasa>
habitacion id="cuarto de baño">
mueble>aparador< /mueble>
mueble>bañera< /mueble>
puerta a="pasillo">
/habitacion>
habitacion id="pasillo">
mueble>cuadro< /mueble>
puerta a="cuarto de baño">
puerta a="dormitorio">
< /habitacion>
< /micasa>
El código en Ruby es:
#!/usr/bin/ruby
require 'rexml/document'
include REXML
documento = ARGV[0]
habitacion = ARGV[1]
file = File.new(documento)
doc = Document.new(file)
XPath.each(doc,"//puerta[@a=\""+habitacion+"\"]/..") { |habitaciones|
puts "*"+habitaciones.attribute('id').to_s
}
Con esto le decimos: que busque las puertas de una habitación pasada como parámetro (gracias al atributo @a). Luego pasa a cadena de caracteres el identificador de las habitaciones y lo muestras por pantalla.Ejemplo:
ruby ./ejer212a.rb pasillo
*cuarto de baño
2.Imprimir de un documento XML con los equipos de futbol los que estén clasificados para la liga de campeones
Documento en Ruby:
#!/usr/bin/ruby
require 'rexml/document'
include REXML
documento = ARGV[0]
file = File.new(documento)
doc = Document.new(file)
#Buscamos los equipos que tengan una posicion en la lista menos o igual que 4
XPath.each(doc,"//equipo[position()<=4]") { |equipos|
puts "*"+equipos.text
}
Documento en XML
champion>
equipo posicion="1"> Olula del Rio/equipo>
equipo posicion="2"> Real Madrid/equipo>
equipo posicion="3"> Almeria/equipo>
equipo posicion="4"> Granada/equipo>
equipo posicion="5"> Olula/equipo>
equipo posicion="6"> Betis/equipo>
equipo posicion="7"> Barca/equipo>
/champion>
Ejemplo:
ruby ./ejer212b.rb champion.xml
* Olula del Rio
* Real Madrid
* Almeria
* Granada
No hay comentarios:
Publicar un comentario