I have a requirement for dynamically creating a XML, with given input parameters like XSD file and JSON string (if required JSON message can be converted HashMap object). Java program should associate element name present in JSON string/HashMap object with the element name present in XSD and generate XML accordingly. Also please note that, I will have multiple XSDs out of which one will be passed in as input to the program based on some condition.
Input Data:
1) JSON String:
---------------
{
"employeeInput":{
"name":"someone",
"age":"25",
"street":"high street",
"city":"Amsterdam"
}
}
(or I can convert JSON string to HashMap object and send this object as input)
HashMap Object:
---------------
{employeeInput={name=someone, age=25, street=high street, city=Amsterdam}}
2) XSD File:
------------
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.XYZOrganization.com/schemas/Request_Handler/Schema.xsd"
targetNamespace="http://www.XYZOrganization.com/schemas/Request_Handler/Schema.xsd"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="employeeInput">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="age"/>
<xs:element ref="street"/>
<xs:element ref="city"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="name" type="xs:string"/>
<xs:element name="age" type="xs:string"/>
<xs:element name="street" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
</xs:schema>
Expected Output XML (with namespace and prefix according to XSD):
<?xml version="1.0" encoding="UTF-8"?>
<ns0:employeeInput xmlns:ns0="http://www.XYZOrganization.com/schemas/Request_Handler/Schema.xsd">
<ns0:name>someone</ns0:name>
<ns0:age>25</ns0:age>
<ns0:street>high street</ns0:street>
<ns0:city>Amsterdam</ns0:city>
</ns0:employeeInput>
Kindly let me know if there is any option available to achieve this. I have read about JAXB marshalling, but have very little idea how to implement this.
Thanks,
Param