users@jaxb.java.net

RE: marshalling problem

From: Philip A. Culver <pculver_at_bostonatlantic.net>
Date: Thu, 23 Oct 2003 14:44:23 -0400

Hi Tim,

From what I see, you created the b instance as a type as opposed to an
element. The type class does not have any xml element information within
it. It is only a type. So When you marshall it you see the output you
received.

I.e. The code

        BType b = factory.createBType();
        CType c = factory.createCType();

Should have been
          AElement.B b = factory.createATypeB();
        BType.C c = factory.createBTypeC();

Hope this helps.

Regards,
Phil


-----Original Message-----
From: Philip, Tim [mailto:Tim_Philip_at_intuit.com]
Sent: Thursday, October 23, 2003 2:18 PM
To: 'users_at_jaxb.dev.java.net'
Subject: marshalling problem


I'm very confused. I'm probably doing something wrong, but this
seems really weird. I have a schema that supports this xml
document:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a>
    <b>
                <c>
                        <data>foo</data>
                </c>
        </b>
</a>


Which works just fine when unmarshalling. It parses it just fine.
And I can marshall it back out and it looks the same. Great!

However ... if I construct the classes manually and unmarshall the object
tree I get this:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a>
    <data>foo</data>
</a>

Which is completely invalid!! I certainly can't read it back in without
errors.

Here is the code I used to construct the object tree. I'm guessing the
problem is in here someplace. But I just don't see it.

    public static Object construct() throws JAXBException
    {
        ObjectFactory factory = new ObjectFactory();
        AElement a = factory.createAElement();
        BType b = factory.createBType();
        CType c = factory.createCType();

        a.getB().add(b);
        b.getC().add(c);
        c.setData("foo");

        return a;
    }

Here is the schema I used:

<?xml version="1.0" encoding="utf-8" standalone="no"?> <xsd:schema
        elementFormDefault="qualified"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema">

        <xsd:element name="a">
                <xsd:complexType>
                        <xsd:sequence maxOccurs="unbounded">
                                <xsd:element name="b" type="bType"
minOccurs="0"/>
                        </xsd:sequence>
                </xsd:complexType>
        </xsd:element>

        <xsd:complexType name="bType">
                <xsd:sequence maxOccurs="unbounded">
                        <xsd:element name="c" type="cType"/>
                </xsd:sequence>
        </xsd:complexType>

        <xsd:complexType name="cType">
                <xsd:sequence>
                        <xsd:element name="data" type="xsd:string"/>
                </xsd:sequence>
        </xsd:complexType>

</xsd:schema>


I'd greatly appreciate someone pointing out where exactly
I'm going wrong.


Thanks!
Tim.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_jaxb.dev.java.net
For additional commands, e-mail: users-help_at_jaxb.dev.java.net





---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_jaxb.dev.java.net
For additional commands, e-mail: users-help_at_jaxb.dev.java.net