1 Reply Latest reply on Feb 20, 2008 4:49 AM by Richard Opalka

    [JAXB] Problem with generating XML from Schema

    Mariusz Smykula Newbie

      I have sample schema:

      <?xml version="1.0" encoding="UTF-8"?>
      <xs:schema targetNamespace="http://www.test.com/app"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns="http://www.test.com/app" elementFormDefault="qualified"
       version="1.0">
       <xs:element name="DocSample">
       <xs:complexType>
       <xs:sequence>
       <xs:element name="Element">
       </xs:element>
       </xs:sequence>
       </xs:complexType>
       </xs:element>
      </xs:schema>
      


      Generated objects:
      //
      // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1.5-b01-fcs
      // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
      // Any modifications to this file will be lost upon recompilation of the source schema.
      // Generated on: 2008.02.20 at 10:25:59 AM CET
      //
      
      
      package pl.pentacomp.pentascape.da;
      
      import javax.xml.bind.annotation.XmlAccessType;
      import javax.xml.bind.annotation.XmlAccessorType;
      import javax.xml.bind.annotation.XmlElement;
      import javax.xml.bind.annotation.XmlRootElement;
      import javax.xml.bind.annotation.XmlType;
      
      
      /**
       * <p>Java class for anonymous complex type.
       *
       * <p>The following schema fragment specifies the expected content contained within this class.
       *
       * <pre>
       * &lt;complexType>
       * &lt;complexContent>
       * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
       * &lt;sequence>
       * &lt;element name="Element" type="{http://www.w3.org/2001/XMLSchema}anyType"/>
       * &lt;/sequence>
       * &lt;/restriction>
       * &lt;/complexContent>
       * &lt;/complexType>
       * </pre>
       *
       *
       */
      @XmlAccessorType(XmlAccessType.FIELD)
      @XmlType(name = "", propOrder = {
       "element"
      })
      @XmlRootElement(name = "DocSample", namespace = "http://www.test.com/app")
      public class DocSample {
      
       @XmlElement(name = "Element", namespace = "http://www.test.com/app", required = true)
       protected Object element;
      
       /**
       * Gets the value of the element property.
       *
       * @return
       * possible object is
       * {@link Object }
       *
       */
       public Object getElement() {
       return element;
       }
      
       /**
       * Sets the value of the element property.
       *
       * @param value
       * allowed object is
       * {@link Object }
       *
       */
       public void setElement(Object value) {
       this.element = value;
       }
      
      }
      


      Java code:

      @Test
       public void testSample() {
       DocSample doc = new DocSample();
       doc.setElement(new String("sdsd"));
      
       StreamResult result = new StreamResult(new StringWriter());
      
       JAXBContext jaxbContext;
       try {
       jaxbContext = JAXBContext.newInstance(DocSample.class);
       Marshaller marshaller = jaxbContext.createMarshaller();
       marshaller.marshal(doc, result);
      
       } catch (JAXBException e) {
      
       e.printStackTrace();
       }
      
       String response = result.getWriter().toString();
      
       System.out.println(response);
      
       }


      And result XML:

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <DocSample xmlns="http://www.test.com/app">
       <Element xsi:type="xs:string"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       sdsd
       </Element>
      </DocSample>


      Is this XML correct? Why xmlns:xs, xmlns:xsi are assigned to Element, not DocSample. Please help.