Estoy implementando un exportador para un formato de datos XML que requiere espacios de nombres. Estoy usando Nokogiri XML Builder (versión 1.4.0) para hacer esto.Creación de un documento XML con un elemento raíz con nombre de espacio con el constructor Nokogiri
Sin embargo, no puedo hacer que Nokogiri cree un nodo raíz con un espacio de nombres.
Esto funciona:
Nokogiri::XML::Builder.new { |xml| xml.root('xmlns:foobar' => 'my-ns-url') }.to_xml
<?xml version="1.0"?>
<root xmlns:foobar="my-ns-url"/>
Como se hace esto:
Nokogiri::XML::Builder.new do |xml|
xml.root('xmlns:foobar' => 'my-ns-url') { xml['foobar'].child }
end.to_xml
<?xml version="1.0"?>
<root xmlns:foobar="my-ns-url">
<foobar:child/>
</root>
Sin embargo, necesito algo así como <foo:root>
y esto no funciona:
Nokogiri::XML::Builder.new { |xml| xml['foobar'].root('xmlns:foobar' => 'my-ns-url') }.to_xml
NoMethodError: undefined method `namespace_definitions' for #<Nokogiri::XML::Document:0x11bfef8 name="document">
espacios de nombres tienen que ser definido antes del uso, aparentemente, por lo que no hay forma de agregar uno al nodo raíz.
Encontré a question about this on the Nokogiri mailing list, pero no tenía ninguna respuesta. ¿Alguien tiene una solución?
funciona como un encanto. ¡Gracias! –
Usted, señor, me ha ahorrado mucha frustración – yalestar
De nada, yalestar. – akuhn