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:* [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/SchemaTypeLoader.html#newInstance(org.apache.xmlbeans.SchemaType,%20org.apache.xmlbeans.XmlOptions)<http://xmlbeans.apache.org/docs/2.2.0/reference/org/apache/xmlbeans/SchemaTypeLoader.html#newInstance%28org.apache.xmlbeans.SchemaType,%20org.apache.xmlbeans.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] > > >

