thanks.

I'll go with that.



2009/12/28 Gillen, Paul <[email protected]>

>  Re “I need to copy the Root into a Pojo”, an XMLBean *is* a pojo; not
> sure what you’re asking.
>
>
>
> Re “need to find out which attributes are not in the schemas” I think this
> does what you’re asking; crudely effective:
>
>
>
> package test;
>
>
>
> import java.io.File;
>
>
>
> import noNamespace.ATTRTESTDocument;
>
>
>
> import org.apache.xmlbeans.QNameSet;
>
> import org.apache.xmlbeans.SchemaProperty;
>
> import org.apache.xmlbeans.SchemaType;
>
> import org.apache.xmlbeans.XmlObject;
>
> import org.w3c.dom.Node;
>
>
>
> public class Atest
>
> {
>
>     private static final QNameSet            QNS         =
> QNameSet.forWildcardNamespaceString("##any", "*");
>
>
>
>     public static void main(String[] args)
>
>     throws Exception
>
>     {
>
>         Atest   mod = new Atest();
>
>         mod.go();
>
>     }
>
>
>
>     private void go()
>
>     throws Exception
>
>     {
>
>         ATTRTESTDocument    atd     = ATTRTESTDocument.Factory.parse(new
> File("xml/AttrTest.xml"));
>
>         showChildAttributes(atd);
>
>     }
>
>
>
>     private static void showChildAttributes(XmlObject xo)
>
>     throws Exception
>
>     {
>
>         String      parentName  = xo.getDomNode().getLocalName();
>
>         XmlObject[] xoAttrs     = xo.selectAttributes(QNS);
>
>
>
>         for (int i=0; i < xoAttrs.length; i++)
>
>         {
>
>             Node        domainNode  = xoAttrs[i].getDomNode();
>
>             String      childName   = domainNode.getLocalName();
>
>             String      childValue  = domainNode.getNodeValue();
>
>             boolean     isInXsd     = isAttributeInSchema(xo, childName);
>
>             System.out.println
>
>             (
>
>                 parentName+":"+
>
>                 childName+"="+
>
>                 childValue+"\n\t"+
>
>                 "defined in XSD:"+isInXsd
>
>            );
>
>         }
>
>
>
>         XmlObject[] xoChildren  = xo.selectChildren(QNS);
>
>         if (xoChildren != null)
>
>         {
>
>             for (int i=0; i < xoChildren.length; i++)
>
>             {
>
>                 showChildAttributes(xoChildren[i]);
>
>             }
>
>         }
>
>     }
>
>
>
>     private static boolean isAttributeInSchema(XmlObject xo, String name)
>
>     {
>
>         boolean                 ret         = false;
>
>         SchemaType              xoSt        = xo.schemaType();
>
>         SchemaProperty[]        xoSps       =
> xoSt.getAttributeProperties();
>
>
>
>         if (xoSps.length > 0)
>
>         {
>
>             for (int i=0; i < xoSps.length; i++)
>
>             {
>
>                 SchemaProperty    xoSp   = xoSps[i];
>
>                 if (xoSp.getName().toString().equals(name))
>
>                 {
>
>                     ret = true;
>
>                     break;
>
>                 }
>
>             }
>
>         }
>
>         return ret;
>
>     }
>
> }
>
>
>
> In my test this returned:
>
> ATTRTEST:noNamespaceSchemaLocation=../xsd/AttrTest.xsd
>
>       defined in XSD:false
>
> TESTELEM:DEFATTR=defined
>
>       defined in XSD:true
>
> TESTELEM:BOGUSATTR=bogus
>
>       defined in XSD:false
>
> BOGUSELEM:BOGOSITY=true
>
>       defined in XSD:false
>  ------------------------------
>
> Paul Gillen
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>  ------------------------------
>
> *From:* Sebastien Dionne [mailto:[email protected]]
> *Sent:* Wednesday, December 23, 2009 7:07 PM
>
> *To:* [email protected]
> *Subject:* Re: Xmlbeans is able to retrieve extra attribute from xml ?
>
>
>
> I found the problem.. a cut and paste error
>
> root = RootDocument.Factory.parse(new
> File("./src/test/resources/device.xml"));
>
> I forgot the new File() :(
>
> now when I do root.toString();
>
> I see the original file imported.. that,s perfect.
>
> now I need to copy the Root into a Pojo.
>
> there is a easy way to do that ?   and I need to find out which attributes
> are not in the schemas.. like that I'll convert them in a structure like
> JAXB  Map otherAttributes
>
>
>  2009/12/23 Sebastien Dionne <[email protected]>
>
> works fine with JAXB.  and the syntax is fine.
>
>
>
> XSD
>
> <?xml version="1.0" encoding="utf-8"?>
> <root xmlns="urn:schemas-upnp-org:device-1-0">
>    <device>
>       <deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType>
>       <serviceList>
>          <service>
>
> <serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
>
> <serviceId>urn:upnp-org:serviceId:urn:schemas-upnp-org:service:ConnectionManager</serviceId>
>             <SCPDURL>ConnectionManager.xml</SCPDURL>
>             <controlURL>ConnectionManager/Control</controlURL>
>             <eventSubURL>ConnectionManager/Event</eventSubURL>
>          </service>
>       </serviceList>
>    </device>
> </root>
>
>
> XML received
>
> <?xml version="1.0" encoding="utf-8"?>
> <root xmlns="urn:schemas-upnp-org:device-1-0">
>    <device>
>       <deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType>
>       <serviceList>
>          <service>
>
> <serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
>
> <serviceId>urn:upnp-org:serviceId:urn:schemas-upnp-org:service:ConnectionManager</serviceId>
>             <SCPDURL>ConnectionManager.xml</SCPDURL>
>             <controlURL>ConnectionManager/Control</controlURL>
>             <eventSubURL>ConnectionManager/Event</eventSubURL>
>          </service>
>       </serviceList>
>       <dlna:X_DLNADOC xmlns:ns2="urn:schemas-upnp-org:device-1-0"
> xmlns="">DMS-1.00</dlna:X_DLNADOC>
>    </device>
> </root>
>
> 2009/12/23 Cezar Andrei <[email protected]>
>
> It’s probably because the document is not a well formed XML document.
>
>
>
> Cezar
>
>
>   ------------------------------
>
> *From:* Sebastien Dionne [mailto:[email protected]]
> *Sent:* Wednesday, December 23, 2009 11:17 AM
>
>
> *To:* [email protected]
>
> *Subject:* Re: Xmlbeans is able to retrieve extra attribute from xml ?
>
>
>
> thanks, but why do I obtain a exception CDATA when I parse a xml that
> contains more data then the schema ?
>
> RootDocument root = RootDocument.Factory.parse(new
> File("./src/test/resources/
>
> RootDevice.xml"));
> System.out.println(root.toString());
>
> Exception in thread "main" org.apache.xmlbeans.XmlException: error:
> Unexpected element: CDATA
>     at
> org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3486)
>     at org.apache.xmlbeans.impl.store.Locale.parse(Locale.java:712)
>
>
>
> 2009/12/23 Cezar Andrei <[email protected]>
>
> Sebastien,
>
>
>
> It is possible, please check the XmlCursor interface. On the xmlbeans
> object you have the attributes, call:
>
> XmlCursor xc = xobj.getCursor(); . Move the cursor around with
> xc.toFirstAttribute(); xc.toNextAttribute();
>
> And get info on the current token, in your case the attribute: xc.getName
> xc.getTextValue, and when you’re done call xc.dispose().
>
>
>
> Cezar
>
>
>   ------------------------------
>
> *From:* Sebastien Dionne [mailto:[email protected]]
> *Sent:* Wednesday, December 23, 2009 7:10 AM
> *To:* [email protected]
> *Subject:* Xmlbeans is able to retrieve extra attribute from xml ?
>
>
>
> I have a simple question.
>
>
>
> I have a xsd standard (string..no complextype).
>
> I receive xml message that can contains extra attributes that are not in
> the xsd.
>
> With JAXB they are put into
>
>     /**
>      * Gets a map that contains attributes that aren't bound to any typed
> property on this class.
>      *
>      * <p>
>      * the map is keyed by the name of the attribute and
>      * the value is the string value of the attribute.
>      *
>      * the map returned by this method is live, and you can add new
> attribute
>      * by updating the map directly. Because of this design, there's no
> setter.
>      *
>      *
>      * @return
>      *     always non-null
>      */
>     public Map<QName, String> getOtherAttributes() {
>         return otherAttributes;
>     }
>
> but is it possible to do something similar with xmlbeans ?
>
> It a showstopper if I can't do that.
>
> thanks
>
>
> --
> -------------
> A+
>
> Sébastien.
>
> Vous pouvez me suivre sur Twitter / You can follow me on Twitter :
> http://twitter.com/survivant
>
>
>
>
> --
> -------------
> A+
>
> Sébastien.
>
> Vous pouvez me suivre sur Twitter / You can follow me on Twitter :
> http://twitter.com/survivant
>
>
>
>
> --
> -------------
> A+
>
> Sébastien.
>
> Vous pouvez me suivre sur Twitter / You can follow me on Twitter :
> http://twitter.com/survivant
>
>
>
>
> --
> -------------
> A+
>
> Sébastien.
>
> Vous pouvez me suivre sur Twitter / You can follow me on Twitter :
> http://twitter.com/survivant
>



-- 
-------------
A+

Sébastien.

Vous pouvez me suivre sur Twitter / You can follow me on Twitter :
http://twitter.com/survivant

Reply via email to