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]