That looks like it's exactly what I need... However, I need to get the new
instance into a working XML document. Trying to do this via the DOM API is
giving me a "Child to add is from another document" error. 

 

So, now the question is, if I have 2 XmlObjects and I *know* the first one is
a parent element to the second one, how can I do the equivalent of DOM's
"appendChild()" method but with the XmlObject interface?

 

Something like:

 

<code>

                XmlObject parent = getParentObject();

SchemaTypeLoader loader = XmlBeans.getContextTypeLoader();

XmlObject child = loader.newInstance(getSomeSchemaType(), null);

 

                //Here's what I *want* to do

                parent.appendChild(child);

assert(parent.validate());    //Should always be OK since I know
getSomeSchemaType() will always return an XmlObject that is a child of parent

</code>

 

Thanks,

cory

 

From: Jacob Danner [mailto:[EMAIL PROTECTED] 
Sent: Monday, October 22, 2007 11:41 AM
To: [email protected]
Subject: Re: instantiate given a schema type

 

Have you looked at the SchemaTypeLoader APIs
http://xmlbeans.apache.org/docs/2.2.0/reference/org/apache/xmlbeans/SchemaTyp
eLoader.html#newInstance(org.apache.xmlbeans.SchemaType,%20org.apache.xmlbean
s.XmlOptions)

-jacobd

On 10/22/07, Cory Virok <[EMAIL PROTECTED]> wrote:

Given only a SchemaType object, is there a way to instantiate a new XmlObject
that the SchemaType represents?
I have it working but my solution is clunky and uses reflection... There's
gotta be a better way!

I want to do something like this:

SchemaType someType = getFooSchemaType();
Foo foo = (Foo) newInstanceFromSchemaType(someType);

Currently, I have this:

<code>
        //children[i] is an SchemaParticle 

        //objClass is now the Class obj that represents the *interface* to
the object I really want...
        Class objClass = children[i].getType().getJavaClass();
        // Make the assumption that XMLbeans will always 
        // create an inner "Factory" class!
        Class innerFactory = objClass.getClasses()[0];
        Method newInstanceMeth =
innerFactory.getDeclaredMethod("newInstance",

new Class[0]); 

        XmlObject childObj = (XmlObject) newInstanceMeth.invoke(null, null);
</code>

Thanks,
cory

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

 

Reply via email to