I have a Map (it can be nested map, containing of maps) and a schema. Keys in Map represent element/attribute name of the schema and an entry in Map will be at same depth as an element defined in schema
I need help in generating xml from the map as per the schema provided, without generating new files (as e.g Jaxb would require) Sample schema/map provided below
e.g Map = [dept=[deptno="10",dname="ABC",loc="XYZ",emps=[[empno=1000,ename="Albert"], [empno=2000,ename="John"]]]] and schema will be
e.g Schema
<?xml version="1.0" encoding="windows-1252" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xsd:element name="depts">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="dept" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="deptno" type="xsd:string"/><!-- This simple element e.g can be attribute in some schema-->
<xsd:element name="dname" type="xsd:string"/>
<xsd:element name="emps" maxOccurs="unbounded" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="empno" type="xsd:string"/>
<xsd:element name="ename" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
On Fri, 16 Nov 2012 22:52:46 -0800 (PST), Mausam
<mausamh...@gmail.com> wrote, quoted or indirectly quoted someone who
said :
>I have a Map (it can be nested map,
containing of maps) and a schema. Keys in Map represent
element/attribute name of the schema and an entry in Map will be at
same depth as an element defined in schema
Presuming you can chase/span/visit nodes of your MAP tree and build a
parse tree in RAM, element by element see
http://mindprod.com/jgloss/xml.html#WRITING for how to get a linear stream of XML text out of it.
You might want to read up on the visitor pattern so that each node can
convert itself.
see http://mindprod.com/jgloss/visitor.html -- Roedy Green Canadian Mind Products http://mindprod.com Types of Garbage Collection:
()In Canada, the government sends men to your house every every week
to take away your garbage. Hoarders are free to hang onto things they don't really need.
()In third world countries, it is up to you to take your own garbage away.
()Java's garbage collection system is analogous to a garbage removal
system where every hour, workers scan your house for junk mail, the
contents of waste baskets, carpet lint, toenail clippings and anything else they are absolutely sure you don't want to keep.
()C++'s system for disposing of unreferenced objects is similar to India's,
with the strange feature that undiscarded garbage becomes invisible but
still stinks.
On Sat, 17 Nov 2012 20:14:10 -0800 (PST), Mausam
<mausamh...@gmail.com> wrote, quoted or indirectly quoted someone who
said :
>What I understand is build a model from XSD, and then loop the map for all the data and populate the model from data in Map.
>Was wondering if there is a better/efficient way to do it, or existing API to do that, so that I do not have to reinvent the wheel.
I don't how there could be. Your structure is something you made up.
Why would any API or utility you did not write be able to eat it
directly?
If you have code to chase YOUR tree your ar 90% of the way there. You
It just walks the tree, calling convertToXSD for each node.
convertToXSD would implement an interface or abstract class, with code
for most nodes identical.
-- Roedy Green Canadian Mind Products http://mindprod.com Types of Garbage Collection:
()In Canada, the government sends men to your house every every week
to take away your garbage. Hoarders are free to hang onto things they don't really need.
()In third world countries, it is up to you to take your own garbage away.
()Java's garbage collection system is analogous to a garbage removal
system where every hour, workers scan your house for junk mail, the
contents of waste baskets, carpet lint, toenail clippings and anything else they are absolutely sure you don't want to keep.
()C++'s system for disposing of unreferenced objects is similar to India's,
with the strange feature that undiscarded garbage becomes invisible but
still stinks.
> I have a Map (it can be nested map, containing of maps) and a schema. Keys in Map represent element/attribute name of the schema and an entry in Map will be at same depth as an element defined in schema
> I need help in generating xml from the map as per the schema provided, without generating new files (as e.g Jaxb would require) Sample schema/map provided below
> e.g Map = [dept=[deptno="10",dname="ABC",loc="XYZ",emps=[[empno=1000,ename="Albert"], [empno=2000,ename="John"]]]] and schema will be
I would probably:
- generate a Java class from the schema (xjc)
- populate from Map to an instance of that class via recursion
and reflection
- serialize instance to XML via JAXB
If you have high performance requirements, then you may need
to do some custom coding.
> On 11/17/2012 1:52 AM, Mausam wrote:
>> I have a Map (it can be nested map, containing of maps) and a schema.
>> Keys in Map represent element/attribute name of the schema and an
>> entry in Map will be at same depth as an element defined in schema
>> I need help in generating xml from the map as per the schema provided,
>> without generating new files (as e.g Jaxb would require) Sample
>> schema/map provided below
>> e.g Map =
>> [dept=[deptno="10",dname="ABC",loc="XYZ",emps=[[empno=1000,ename="Albert"], [empno=2000,ename="John"]]]]
>> and schema will be
> I would probably:
> - generate a Java class from the schema (xjc)
> - populate from Map to an instance of that class via recursion
> and reflection
> - serialize instance to XML via JAXB
> If you have high performance requirements, then you may need
> to do some custom coding.
Thanks a lot Arne for taking up the time to write code. However we do not want to generate java files everytime we get a different schema. Schema and values are not fixed to one or two datatypes.
> I have a Map (it can be nested map, containing of maps) and a schema. Keys in Map represent element/attribute name of the schema and an entry in Map will be at same depth as an element defined in schema
> I need help in generating xml from the map as per the schema provided, without generating new files (as e.g Jaxb would require) Sample schema/map provided below
> e.g Map = [dept=[deptno="10",dname="ABC",loc="XYZ",emps=[[empno=1000,ename="Albert"], [empno=2000,ename="John"]]]] and schema will be
One question I have is, how and when is the generation supposed to occur?
IOW, what is the environment?
And where did the Map come from? If, as you replied to Arne, your schema can change, what process is responsible for creating new Maps that are relevant for updated schemas? Such a map, after all, should be a Java analog of an XML instance for the target schema, you don't need the schema at that point to generate a valid XML.
> Thanks a lot Arne for taking up the time to write code. However we do
> not want to generate java files everytime we get a different schema.
> Schema and values are not fixed to one or two datatypes.
There are nothing in the concept that limits it to
one or two data types (actually the example used three!).
And it is not clear why it is a bigger problem to add
a class file compiled from Java generated from schema
than to add the schema. In both cases you some code.
On Monday, November 19, 2012 4:29:15 PM UTC+5:30, Arved Sandstrom wrote:
> On 11/17/2012 02:52 AM, Mausam wrote:
> > Hello,
> > I have a Map (it can be nested map, containing of maps) and a schema. Keys in Map represent element/attribute name of the schema and an entry in Map will be at same depth as an element defined in schema
> > I need help in generating xml from the map as per the schema provided, without generating new files (as e.g Jaxb would require) Sample schema/map provided below
> > e.g Map = [dept=[deptno="10",dname="ABC",loc="XYZ",emps=[[empno=1000,ename="Albert"], [empno=2000,ename="John"]]]] and schema will be
> I have a Map (it can be nested map, containing of maps) and a schema. Keys in Map represent element/attribute name of the schema and an entry in Map will be at same depth as an element defined in schema
> I need help in generating xml from the map as per the schema provided, without generating new files (as e.g Jaxb would require) Sample schema/map provided below
> e.g Map = [dept=[deptno="10",dname="ABC",loc="XYZ",emps=[[empno=1000,ename="Albert"], [empno=2000,ename="John"]]]] and schema will be
Try this: http://codeviewer.org/view/code:2c08 (sorry, but code posted on usenet looks really ugly). Note that this code can only handle a schema that looks like the one you have provided (no support for xsd:choice, schema must be in Russian Doll format, no proper quoting of special characters like <>" which are not allowed in XML string).