1. Hacer un filtro SAX que traduzca el célebre XML casero de etiquetas en español a etiquetas en inglés.
El código en ruby es el siguiente:
#!/usr/bin/ruby
#Librerias
require 'rexml/document'
require 'rexml/streamlistener'
include REXML
#Archivo xml pasado como argumento
file=ARGV[0]
#Diccionario
traduce= {
"micasa"=>"myhouse",
"habitacion"=>"room",
"mueble"=>"furniture",
"televisión"=>"TV",
"mesa"=>"table",
"sofá"=>"sofa",
"puerta"=>"door"}
#Definimos la clase
class Traduce
include StreamListener
def initialize(tags)
#Variables de instancia
@traduce=tags
@escribe = false
end
#Eventos
#Comienzo de etiqueta
def tag_start(name, attributes)
#Español --> Inglés
puts "<"+@traduce[name]+">"
#Dentro de la etiqueta mueble hay texto dentro por eso se permite escribir
if (name == "mueble")
@escribe = true
end
end
#Final de una etiqueta
def tag_end(name)
#Español --> Inglés
puts ""+@traduce[name]+">"
@escribe=false
end
#Imprime el texto si está activado @escribe
def text(text)
if @escribe
puts @traduce[text]
end
end
#Fin de la clase
end
listener = Traduce.new(traduce)
parser = Parsers::StreamParser.new(File.new(file), listener)
parser.parse
y para probarlo escribimos en el terminal:
ruby ./ejer210.rb muebles.xml
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario