thanks, but I'm not actually sure. and I don't know where I'll received
extra attributes.
here a sample :
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>
if I do that :
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 Gillen, Paul <[email protected]>
> This seems to do what you’re asking.
>
>
>
> Assuming an XSD:
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> elementFormDefault="qualified" attributeFormDefault="unqualified">
>
> <xs:element name="ATTRTEST">
>
> <xs:complexType>
>
> <xs:sequence>
>
> <xs:element name="TESTELEM">
>
> <xs:complexType>
>
> <xs:attribute name="DEFATTR"
> type="xs:string"/>
>
> </xs:complexType>
>
> </xs:element>
>
> </xs:sequence>
>
> </xs:complexType>
>
> </xs:element>
>
> </xs:schema>
>
> And XML:
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <ATTRTEST xsi:noNamespaceSchemaLocation="../xsd/AttrTest.xsd" xmlns:xsi="
> http://www.w3.org/2001/XMLSchema-instance">
>
> <TESTELEM DEFATTR="defined" BOGUSATTR="bogus"/>
>
> </ATTRTEST>
>
> The following code:
>
> package test;
>
>
>
> import java.io.File;
>
>
>
> import javax.xml.namespace.QName;
>
>
>
> import org.apache.xmlbeans.impl.values.XmlObjectBase;
>
>
>
> import noNamespace.ATTRTESTDocument;
>
> import noNamespace.ATTRTESTDocument.ATTRTEST;
>
> import noNamespace.ATTRTESTDocument.ATTRTEST.TESTELEM;
>
>
>
> public class Atest
>
> {
>
> public static void main(String[] args)
>
> throws Exception
>
> {
>
> Atest o = new Atest();
>
> o.go();
>
> }
>
>
>
> private void go()
>
> throws Exception
>
> {
>
> ATTRTESTDocument atd = ATTRTESTDocument.Factory.parse(new
> File("xml/AttrTest.xml"));
>
> ATTRTEST at = atd.getATTRTEST();
>
> TESTELEM te = at.getTESTELEM();
>
> System.out.println(te.getDEFATTR());
>
> XmlObjectBase ba = (XmlObjectBase)te.selectAttribute(new
> QName("BOGUSATTR"));
>
> System.out.println(ba.getStringValue());
>
> }
>
> }
>
> Returns:
>
> defined
>
> bogus
> ------------------------------
>
> Paul Gillen
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> ------------------------------
>
> *From:* Sebastien Dionne [mailto:[email protected]]
> *Sent:* Wednesday, December 23, 2009 8: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