Hi,

I eventually can insert one XML bean into another using cursor. But still
some question:

1. As experiment at point (A) and (B) below, it seems that XMLBean inserts
the child after the cursor, rather than at the cursor, so I have to wrp it
in a dummy doc or parent element. This also seems contradicting to the
tutorial/document. Any idea why this is the case?

2. Is there a simpler API method that insert an XmlObject? Something like:
      body.insert(XmlObject); // generated
      cursor.insert(XmlObject); // cursor-based

Thanks

public class SOAPXBeanOutputTest {
   public static void main(String[] args) throws Exception {
       RequestType request = RequestType.Factory.newInstance();
       request.setIssueInstant(Calendar.getInstance());
       request.setRequestID("REQ123");
       AttributeQueryType query = request.addNewAttributeQuery();
       SubjectType subject = SubjectType.Factory.newInstance();
       NameIdentifierType nameId = subject.addNewNameIdentifier();
       nameId.setStringValue("NAME123");
       query.setSubject((SubjectType)subject.copy());

       EnvelopeDocument soapDoc = EnvelopeDocument.Factory.newInstance();
       Envelope soapEnv = soapDoc.addNewEnvelope();
       Body soapBody = soapEnv.addNewBody();

       XmlCursor cursor = soapBody.newCursor();
       cursor.toNextToken();

       // (A) if not wrapping in dummy doc/element, results in output
...<soapenv:Body><urn:AttributeQuery...
       RequestDocument dummyDoc = RequestDocument.Factory.newInstance();
       dummyDoc.setRequest(request);

       XmlCursor reqcursor = dummyDoc.newCursor(); // typs = STARTDOC
       //reqcursor.toFirstChild(); // (B) this results in output
...<soapenv:Body><urn:AttributeQuery...
       reqcursor.moveXmlContents(cursor);

       reqcursor.dispose();
       cursor.dispose();

       soapDoc.save(System.out);
   }
}

Reply via email to