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

