Unless I do a DOM node import, I get the "Child to add is from another
document" error when using the DOM API. I tried using the copyXml() method
with XmlCursor but it gave me an error saying that it could not copy and
entire document. 

 

Since we can do this in DOM and in Cursor modes... is this a feature that the
XmlObject API is lacking?

 

Thanks very much for your help,

cory

 

From: Jacob Danner [mailto:[EMAIL PROTECTED] 
Sent: Monday, October 22, 2007 12:38 PM
To: user@xmlbeans.apache.org
Subject: Re: instantiate given a schema type

 

There are a couple of different ways you can do this within XmlObject.
I prefer the xmlcursor methods, but you can also use .newDomNode() and work
with the DOM api and call append child like
parent.newDomNode()...appendChild(...) 
-jacobd

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

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: user@xmlbeans.apache.org
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)
<http://xmlbeans.apache.org/docs/2.2.0/reference/org/apache/xmlbeans/SchemaTy
peLoader.html#newInstance%28org.apache.xmlbeans.SchemaType,%20org.apache.xmlb
eans.XmlOptions%29> 

-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