Hello,
Sorry, but I am new to XmlBeans, so please bear with me. We would like to take a fragment of xml, pass it to the appropriate generated XmlBean factory's parse() method, get back a new generated XmlBean object, and then use its API to get values of attributes, children generated XmlBean objects. Etc. I pass the xml fragment to the generated XmlBeans object factory class's parse() method and get back my generated XmlBean object. I then call "getName()" on it to get the "name" attribute value from it, but the value is null. I added a "validate()" call on the generated xml bean class after the "parse()" call, and it says that the xml is invalid. I think this is why its not working - it cannot parse the xml, so thus it cannot populate the generated xml bean object. Can a non document level generated XmlBean factory parse the corresponding xml fragment and properly populate the generated XmlBean object? It seems like it (also seems like a very useful feature). I have been reading the XmlBeans documentation, and googling all day, but I cannot get a clear answer about this (at for me). Below is the relevant code snippets that exhibit this behavior. My xsd is something like this: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cfgr="http://prosrm.com/configurator/xmlbeans" targetNamespace="http://prosrm.com/configurator/xmlbeans" elementFormDefault="qualified"> <xsd:element name="Application"> <xsd:complexType mixed="false"> <xsd:sequence> <xsd:element name="Table" type="cfgr:Table" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Table" mixed="false"> <!-- "Table" is a list of "Column"s and "Constraint"s --> <xsd:sequence> <xsd:element name="Column" type="cfgr:Column" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="name" form="unqualified" type="xsd:string" use="required"/> </xsd:complexType> ... Using the generated XmlBeans Table class from the above xsd , the code below tries to parse a "Table" xml fragment into a generated XmlBeans "Table" object. It then tries to access the "name" attribute on this object (this returns null). It then does the validate (which fails): // parse Table xml fragment into a Table object. The "toString()" works!! String tableStr = "<xml-fragment xmlns:cfgr=\"http://prosrm.com/configurator/xmlbeans\" >" + " <cfgr:Table name=\"MyTable1\" >" + " <cfgr:Column name=\"MyCol\" type=\"string\" length=\"20\" />" + " <cfgr:Column name=\"MyCol2\" type=\"string\" length=\"25\" />" + " </cfgr:Table>" + "</xml-fragment>"; // Create an XmlOptions instance and set the error listener. XmlOptions validateOptions = new XmlOptions(); ArrayList errorList = new ArrayList(); validateOptions.setErrorListener(errorList); Table tbl1 = Table.Factory.parse(sr); System.out.println("Parsed from String. My Table 1 name is:\n\n" + tbl1.xgetName()+"\n"); System.out.println("tbl1.validate() = " + tbl1.validate(validateOptions)); for (int i = 0; i < errorList.size(); i++) { XmlError error = (XmlError)errorList.get(i); System.out.println("\n"); System.out.println("Message: " + error.getMessage() + "\n"); System.out.println("Location of invalid XML: " + error.getCursorLocation().xmlText() + "\n"); } When I run this code, I get the following output: [junit] Running com.prosrm.configurator.XmlBeanTest [junit] Parsed from String. My Table 1 name is: [junit] null [junit] tbl1.validate() = false [junit] Message: Expected attribute: name [junit] Location of invalid XML: <xml-fragment xmlns:cfgr="http://prosrm.com /configurator/xmlbeans"> <cfgr:Table name="MyTable1"> <cfgr:Column name="MyC ol" type="string" length="20"/> <cfgr:Column name="MyCol2" type="string" leng th="25"/> </cfgr:Table></xml-fragment> [junit] Message: Expected elements '[EMAIL PROTECTED]://prosrm.com/configurator/xm lbeans [EMAIL PROTECTED]://prosrm.com/configurator/xmlbeans' instead of '[EMAIL PROTECTED] p://prosrm.com/configurator/xmlbeans' here [junit] Location of invalid XML: <cfgr:Table name="MyTable1" xmlns:cfgr="htt p://prosrm.com/configurator/xmlbeans"> <cfgr:Column name="MyCol" type="string " length="20"/> <cfgr:Column name="MyCol2" type="string" length="25"/> </cfg r:Table>