Soy completamente nuevo para Ruby. Todo lo que quiero es producir un archivo XML simple.Escribir en XML en ruby
<?xml version="1.0" encoding="ASCII"?>
<product>
<name>Test</name>
</product>
Eso es todo.
Soy completamente nuevo para Ruby. Todo lo que quiero es producir un archivo XML simple.Escribir en XML en ruby
<?xml version="1.0" encoding="ASCII"?>
<product>
<name>Test</name>
</product>
Eso es todo.
Aquí hay un par más opciones para la construcción de XML en Ruby
REXML - incorporado, pero es muy lento, especialmente cuando se trata de grandes documentos
Nokogiri - más nuevos y más rápido, se instala como una rubygem
LibXML-Ruby - incorporado en la biblioteca libxml C, se instala también como rubygem
Si no puede instalar rubygems continuación REXML es sus mejores opciones. Si va a crear grandes documentos XML complejos, entonces Nokogiri o LibXML-Ruby es lo que desea usar.
Todos estos son realmente para analizar xml existente, debe usar Builder para crear xml. – ocodo
nokogiri obtuvo un [generador también] (http://nokogiri.org/Nokogiri/XML/Builder.html) - no estoy seguro de si es mejor, pero si está haciendo el análisis sintáctico y la escritura, puede ser agradable usar el mismo lib. – froderik
El generador de Nokogiris parece enfocado en bloques. Funciona pero he encontrado que Builder es muy útil para construir xml programáticamente – PatrickWalker
Constructor probablemente debe ser su primer punto de parada:
require 'builder'
def product_xml
xml = Builder::XmlMarkup.new(:indent => 2)
xml.instruct! :xml, :encoding => "ASCII"
xml.product do |p|
p.name "Test"
end
end
puts product_xml
produce esto:
<?xml version="1.0" encoding="ASCII"?>
<product>
<name>Test</name>
</product>
que se ve bastante bien para mí.
Unas referencias Constructor:
El enlace de documentación de la API parece estar muerto (¿creo que Rubyforge.org ya no está más?). ¿Hay un enlace actualizado disponible? – pioto
@pioto docs están disponibles en https://github.com/jimweirich/builder - He propuesto una edición para corregir el enlace en la publicación original, pero está pendiente de revisión. –
Basta con Nokogiri::XML::Builder
require 'nokogiri'
builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
xml.root {
xml.products {
xml.widget {
xml.id_ "10"
xml.name "Awesome widget"
}
}
}
end
puts builder.to_xml
salida
Will:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<products>
<widget>
<id>10</id>
<name>Awesome widget</name>
</widget>
</products>
</root>
Este es probablemente el ejemplo más simple de Nokogiri que he visto hasta ahora. Increíble. – Pred
Bueno, ahí lo tienes - guardarlo en un archivo: P – CiscoIPPhone
que quería decir, utilizando un modelo de objetos. –