That's great! Two interesting approaches. Thanks, Nick NAKAMURA, Hiroshi wrote: >Hi, > >On Thu, 19 Aug 2004 12:36:51 +0900, Nicholas Van Weerdenburg ><nick / activehitconsulting.com> wrote: > > >>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 > > >