Hi,
Are there any libraries that handle YAML->XML conversion? I want to use
in-line YAML to allow command-line insertion of XML fragments into a
document.
e.g. addxml.rb --entry "config : {name : url, value : www.blah.com }"
would enter:
<config>
<name>url</name>
<value>www.blah.com</value>
</config>
Just a proof-of-concept thing (not insertion but dumping.)
% cat xmlgenerator.rb
require 'soap/marshal'
class XMLGenerator < SOAP::SOAPGenerator
def obj_to_xml(obj)
soap = SOAP::Mapping.obj2soap(obj)
soap.elename = XSD::QName.new(nil, soap.type.name)
convert_to_xml(soap)
end
def hash_to_xml(hash, name)
soap = SOAP::SOAPElement.from_obj(hash)
soap.elename = XSD::QName.new(nil, name)
convert_to_xml(soap)
end
private
def convert_to_xml(soap)
@generate_explicit_type = false
ns = XSD::NS.new
@buf = ''
@indent = ''
encode_data(ns, true, soap, nil)
@buf
end
end
generator = XMLGenerator.new
class Config
def initialize(name, value)
@name = name
@value = value
end
end
obj1 = Config.new("url", "www.blah.com")
puts generator.obj_to_xml(obj1)
require 'yaml'
obj2 = YAML.load("config : {name : url, value : www.blah.com }")
puts generator.hash_to_xml(obj2, 'root')
% ruby xmlgenerator.rb
<Config>
<name>url</name>
<value>www.blah.com</value>
</Config>
<root>
<config>
<name>url</name>
<value>www.blah.com</value>
</config>
</root>
Regards,
// NaHi
路路路
On Thu, 19 Aug 2004 12:36:51 +0900, Nicholas Van Weerdenburg <nick@activehitconsulting.com> wrote: