Edward Frederick <epfrederick <at> gmail.com> writes:

> 
> Jerome,
> 
> Re: Using the *Document Factories: It's kind of a subtle thing, but
> the compiled objects represent the -contents- of the types, not the
> elements themselves. You need to use the document factory because
> you're parsing a document that has an instance of a complex type as
> its document element, not a document that represents the contents of
> an instance of a complex type. I even confuse myself (if I'm not
> already off base).
> 
> My guess is that the header within a header thing is killing
> you--hdrT's factory is parsing the entire soap header, not your header
> within that header. They have the same name, so it looks like the
> factory isn't complaining about the contour.
> 
> Maybe try:
> 
> HeaderT hdrT = HeaderT.Factory.parse(soapHdr.getDomNode().getFirstChild());
> 
> Ed
> 
> On 2/17/06, Jerome Magnet <jeromem <at> nortel.com> wrote:
> > I am trying to use XML beans in doing simple parsing and data retieval.
> > I successfully generated all the Java classes for two schemas. The parsing 
of
> > an XML document built with these two embedded XML from two different 
namespaces
> > seems to be working well. But, I can't retrieve the simple element values 
using
> > the get methods. I was able to do it for a simple XML from one
> > schema/namespace. Also, I noticed that it only works if you parse from the
> > document class ("Element"Document.Factory.parse()). And, it does not work if
> > you parse directly with the element class ("Element".Factory.parse()). I 
could
> > not find out why in the user guides?
> >
> > thanks to help identify the simple thing I am not seeing!
> > Here are the details below:
> >
> > I use Win2000 with latest XML Beans 2.
> >
> > The following is my code snipet:
> > File msgFile = new File(reqMsgDocFilename);
> > EnvelopeDocument soapEnvDoc = EnvelopeDocument.Factory.parse(msgFile);
> > Envelope soapEnv = soapEnvDoc.getEnvelope();
> > Header soapHdr = soapEnv.getHeader();
> > HeaderT hdrT = HeaderT.Factory.parse(soapHdr.getDomNode());
> > System.out.println("\nRequest header fragment as Xbean 
toStr:\n"+hdrT.toString
> > ());
> > System.out.println("hdrT.activity="+hdrT.getActivityName());
> >
> > The following is the output from the above code:
> > Request header fragment as Xbean toStr:
> > <soap:Header xmlns:soap="http://www.w3.org/2003/05/soap-envelope";
> > xmlns="tmf854.v1">
> >   <header>
> >     <activityName>getSNCsByUserLabel</activityName>
> >     <msgName>getSNCsByUserLabel</msgName>
> >     <msgType>REQUEST</msgType>
> >     <replyToURI>MTOSI/CramerOS</replyToURI>
> >     <correlationId>1234</correlationId>
> >     <communicationPattern>SimpleResponse</communicationPattern>
> >     <communicationStyle>MSG</communicationStyle>
> >     <timestamp>20051004140259</timestamp>
> >   </header>
> > </soap:Header>
> > hdrT.activity=null
> >
> > Notice that I have two schemas 1:SOAP-ENV and 2:MyOwn (default namespace)
> > I can't get to any of the <header> element values (getActivityName returned
> > null)
> >
> > Here is my own schema
> > <?xml version="1.0" encoding="UTF-8"?>
> > <!-- TMF854 Version 1.0 - Copyright TeleManagement Forum 2005 -->
> > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> > targetNamespace="tmf854.v1" xmlns="tmf854.v1"
> > attributeFormDefault="unqualified" elementFormDefault="qualified">
> >   <!-- ======= All includes  ======= -->
> >   <xsd:include schemaLocation="headerVendorExtensions.xsd"/>
> >   <!-- ======== Global Type Declarations ========= -->
> >   <xsd:simpleType name="ActivityName_T">
> >     <xsd:restriction base="xsd:string">
> >       <xsd:pattern value="\w*"/>
> >     </xsd:restriction>
> >   </xsd:simpleType>
> > ...
> >   <xsd:element name="header" type="Header_T"/>
> >   <xsd:complexType name="Header_T">
> >     <xsd:all>
> >       <xsd:element name="activityName" type="ActivityName_T">
> >       </xsd:element>
> > ...
> >   </xsd:complexType>
> > </xsd:schema>
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscribe <at> xmlbeans.apache.org
> > For additional commands, e-mail: user-help <at> xmlbeans.apache.org
> >
> >
> 

Ed,

Thanks for following up on my stumbles using XML Beans.
I tried your sugestion without luck. I spent a long time on this issue with XML 
Beans. I tried with the body part of my soap envelope, which is a complex of a 
single simple type element (string). There is no element name conflict as you 
mentioned, which does not really exists as from two namespaces; soap:Header and 
[EMAIL PROTECTED] So, even with the soap:body element retrieval it does not 
work!

I am very confused. It I do a dump of the two headers:.
soapHdr.dump();
hdrT.dump();

I get the following:
  ROOT (USER) <mark>[0] (DocumentXobj)
    ELEM soap:[EMAIL PROTECTED]://www.w3.org/2003/05/soap-envelope (USER) 
(ElementXobj)
      ATTR xmlns:[EMAIL PROTECTED]://www.w3.org/2000/xmlns/ Value
( "http://www.w3.org/2003/05/soap-envel..."; ) (AttrXobj)
      ATTR [EMAIL PROTECTED]://www.w3.org/2000/xmlns/ Value( "tmf854.v1" ) After
( "\n\t" ) (AttrXobj)
      ELEM soap:[EMAIL PROTECTED]://www.w3.org/2003/05/soap-envelope Value( 
"\n\t\t" 
TEXT[3] ) (USER) After( "\n\t" TEXT[2] ) *:R:<cur>[0] (ElementXobj)
        ELEM [EMAIL PROTECTED] Value( "\n\t\t\t" TEXT[4] ) After( "\n\t" TEXT
[2] ) (ElementXobj)
          ELEM [EMAIL PROTECTED] Value( "getSNCsByUserLabel" TEXT[18] ) 
After( "\n\t\t\t" TEXT[4] ) (ElementXobj)
          ELEM [EMAIL PROTECTED] Value( "getSNCsByUserLabel" TEXT[18] ) After
( "\n\t\t\t" TEXT[4] ) (ElementXobj)
          ELEM [EMAIL PROTECTED] Value( "REQUEST" TEXT[7] ) After( "\n\t\t\t" 
TEXT[4] ) (ElementXobj)
          ELEM [EMAIL PROTECTED] Value( "MTOSI/CramerOS" TEXT[14] ) After
( "\n\t\t\t" TEXT[4] ) (ElementXobj)
          ELEM [EMAIL PROTECTED] Value( "1234" TEXT[4] ) After
( "\n\t\t\t" TEXT[4] ) (ElementXobj)
          ELEM [EMAIL PROTECTED] Value( "SimpleResponse" TEXT
[14] ) After( "\n\t\t\t" TEXT[4] ) (ElementXobj)
          ELEM [EMAIL PROTECTED] Value( "MSG" TEXT[3] ) After
( "\n\t\t\t" TEXT[4] ) (ElementXobj)
          ELEM [EMAIL PROTECTED] Value( "20051004140259" TEXT[14] ) After
( "\n\t\t" TEXT[3] ) (ElementXobj)
      ELEM soap:[EMAIL PROTECTED]://www.w3.org/2003/05/soap-envelope Value( 
"\n\t\t" ) 
After( "\n" ) (ElementXobj)
        ELEM [EMAIL PROTECTED] Value( "\n\t\t\t" ) After( "\n\t" ) 
(ElementXobj)
          ELEM [EMAIL PROTECTED] Value( "aUserLabel" ) After( "\n\t\t" ) 
(ElementXobj)

  ROOT (USER) *:R:<cur>[0] (DocumentXobj)
    ELEM soap:[EMAIL PROTECTED]://www.w3.org/2003/05/soap-envelope Value( 
"\n\t\t" ) 
(ElementXobj)
      ELEM [EMAIL PROTECTED] Value( "\n\t\t\t" ) After( "\n\t" ) (ElementXobj)
        ELEM [EMAIL PROTECTED] Value( "getSNCsByUserLabel" ) After
( "\n\t\t\t" ) (ElementXobj)
        ELEM [EMAIL PROTECTED] Value( "getSNCsByUserLabel" ) After
( "\n\t\t\t" ) (ElementXobj)
        ELEM [EMAIL PROTECTED] Value( "REQUEST" ) After( "\n\t\t\t" ) 
(ElementXobj)
        ELEM [EMAIL PROTECTED] Value( "MTOSI/CramerOS" ) After( "\n\t\t\t" ) 
(ElementXobj)
        ELEM [EMAIL PROTECTED] Value( "1234" ) After( "\n\t\t\t" ) 
(ElementXobj)
        ELEM [EMAIL PROTECTED] Value( "SimpleResponse" ) After
( "\n\t\t\t" ) (ElementXobj)
        ELEM [EMAIL PROTECTED] Value( "MSG" ) After( "\n\t\t\t" ) 
(ElementXobj)
        ELEM [EMAIL PROTECTED] Value( "20051004140259" ) After( "\n\t\t" ) 
(ElementXobj)

So, it seems that the structure is all there. But, how can I access the 
<header> element values using the XML beans methods?

Jerome





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to