A Ruby gem to produce XML data from XSD schemas and DataProvider objects.
See the data-provider gem: https://github.com/markkorput/data-provider
Rubygems:
gem install xsd-populator
Bundler:
gem 'xsd-populator'
Load xsd
require 'xsd_populator'
reader = XsdPopulator.new(:xsd => 'ddex-ern-v36.xsd')
reader.populated_xml # => XML-string
Not that in this minimal implementation, no custom data provider is given to the populator, causing it to use the default internal 'XsdExplanationProvider', which produces explanatory XML.
For this elaborate example XSD, this would produce this xml
In practice, you'd implement a custom DataProvider class (see the data-provider gem) and pass it into the XsdPopulator.
require 'xsd_populator'
data_provider = CustomDataProvider.new(:some => 'data')
reader = XsdPopulator.new(:xsd => 'ddex-ern-v36.xsd', :provider => data_provider)
reader.populated_xml # => XML-string
In case you want to produce only a specific part of an XML hierarchy, you can specify an element when initializing the populator object:
reader = XsdPopulator.new(:xsd => 'ddex-ern-v36.xsd', :element => ['NewReleaseMessage', 'MessageHeader'])
reader.populated_xml # => XML-string containing only the part
The :element option takes an array-value representing an element's XPath (in this case that XPath is /NewReleaseMessage/MessageHeader). The specified element become(s) the root-element(s) in the produced XML.
This example would produce this XML