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);
}
}