Hello,

Can anyone help me on this?

At least I want to know if it is a bug or by design that the top-most
element (e.g. the "Request" element in the example") are omitted. This makes
it hard to write generic codes because one has to know the document type to
wrap the xml bean object.

Thanks



On 12/4/06, Hacking Bear <[EMAIL PROTECTED]> wrote:

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