Note that there are some explanatory texts on larger screens.

plurals
  1. POJAXB generates faulty classes
    primarykey
    data
    text
    <p>after generating some classes from a xsd file, the classes are faulty. a @xmlElementRef is used with required="false" and that attribute is not allowed. My .xsd I'm using:</p> <pre><code>&lt;xs:schema xmlns:ns="http://shop.pau.softm.com/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://shop.pau.softm.com/xsd"&gt; &lt;xs:element name="checkOrder"&gt; &lt;xs:complexType&gt; &lt;xs:sequence&gt; &lt;xs:element minOccurs="0" name="order" nillable="true" type="ns:Order"/&gt; &lt;/xs:sequence&gt; &lt;/xs:complexType&gt; &lt;/xs:element&gt; &lt;xs:complexType name="Order"&gt; &lt;xs:sequence&gt; &lt;xs:element minOccurs="0" name="addressNumber" type="xs:int"/&gt; &lt;xs:element minOccurs="0" name="auftragsNummer" type="xs:int"/&gt; &lt;xs:element minOccurs="0" name="companyNumber" nillable="true" type="xs:string"/&gt; &lt;xs:element maxOccurs="unbounded" minOccurs="0" name="condition" nillable="true" type="ns:Condition"/&gt; &lt;xs:element minOccurs="0" name="currency" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="customerId" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="customerReference" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="deliveryAddress" nillable="true" type="ns:Address"/&gt; &lt;xs:element minOccurs="0" name="deliveryConditions" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="deliveryType" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="endCustomerId" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="endCustomerReference" nillable="true" type="xs:string"/&gt; &lt;xs:element maxOccurs="unbounded" minOccurs="0" name="error" nillable="true" type="ns:Error"/&gt; &lt;xs:element minOccurs="0" name="haltDescription" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="haltFlag" type="xs:boolean"/&gt; &lt;xs:element minOccurs="0" name="keySalesArea" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="openingHours" nillable="true" type="xs:string"/&gt; &lt;xs:element maxOccurs="unbounded" minOccurs="0" name="orderItem" nillable="true" type="ns:OrderItem"/&gt; &lt;xs:element minOccurs="0" name="origin" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="tourNumber" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="type" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="warehouseMan" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="warehouseNumber" type="xs:int"/&gt; &lt;xs:element minOccurs="0" name="wishedDeliveryDate" nillable="true" type="xs:string"/&gt; &lt;/xs:sequence&gt; &lt;/xs:complexType&gt; &lt;xs:complexType name="Condition"&gt; &lt;xs:sequence&gt; &lt;xs:element minOccurs="0" name="description" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="type" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="value" nillable="true" type="xs:decimal"/&gt; &lt;/xs:sequence&gt; &lt;/xs:complexType&gt; &lt;xs:complexType name="Address"&gt; &lt;xs:sequence&gt; &lt;xs:element minOccurs="0" name="city" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="country" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="createAddress" type="xs:boolean"/&gt; &lt;xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="name2" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="name3" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="name4" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="street" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="zip" nillable="true" type="xs:string"/&gt; &lt;/xs:sequence&gt; &lt;/xs:complexType&gt; &lt;xs:complexType name="Error"&gt; &lt;xs:sequence&gt; &lt;xs:element minOccurs="0" name="code" type="xs:int"/&gt; &lt;xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="origin" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="type" nillable="true" type="xs:string"/&gt; &lt;/xs:sequence&gt; &lt;/xs:complexType&gt; &lt;xs:complexType name="OrderItem"&gt; &lt;xs:sequence&gt; &lt;xs:element minOccurs="0" name="additionalText" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="additionalText2" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="customerProductId" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="eanCodeOrderUnit" nillable="true" type="xs:string"/&gt; &lt;xs:element maxOccurs="unbounded" minOccurs="0" name="error" nillable="true" type="ns:Error"/&gt; &lt;xs:element minOccurs="0" name="haltDescriptionItem" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="price" nillable="true" type="xs:decimal"/&gt; &lt;xs:element minOccurs="0" name="productId" nillable="true" type="xs:string"/&gt; &lt;xs:element minOccurs="0" name="quantity" type="xs:double"/&gt; &lt;/xs:sequence&gt; &lt;/xs:complexType&gt; &lt;xs:element name="checkOrderResponse"&gt; &lt;xs:complexType&gt; &lt;xs:sequence&gt; &lt;xs:element minOccurs="0" name="return" nillable="true" type="ns:Order"/&gt; &lt;/xs:sequence&gt; &lt;/xs:complexType&gt; &lt;/xs:element&gt; &lt;xs:element name="submitOrder"&gt; &lt;xs:complexType&gt; &lt;xs:sequence&gt; &lt;xs:element minOccurs="0" name="order" nillable="true" type="ns:Order"/&gt; &lt;/xs:sequence&gt; &lt;/xs:complexType&gt; &lt;/xs:element&gt; &lt;xs:element name="submitOrderResponse"&gt; &lt;xs:complexType&gt; &lt;xs:sequence&gt; &lt;xs:element minOccurs="0" name="return" nillable="true" type="ns:Order"/&gt; &lt;/xs:sequence&gt; &lt;/xs:complexType&gt; &lt;/xs:element&gt; &lt;/xs:schema&gt; </code></pre> <p>and the result (partly)</p> <pre><code>package com.softm.pau.shop.xsd; import javax.xml.bind.JAXBElement; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElementRef; import javax.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "Address", propOrder = { "city", "country", "createAddress", "name", "name2", "name3", "name4", "street", "zip" }) public class Address { @XmlElementRef(name = "city", namespace = "http://shop.pau.softm.com/xsd", type = JAXBElement.class, required = false) protected JAXBElement&lt;Object&gt; city; @XmlElementRef(name = "country", namespace = "http://shop.pau.softm.com/xsd", type = JAXBElement.class, required = false) protected JAXBElement&lt;Object&gt; country; protected Object createAddress; @XmlElementRef(name = "name", namespace = "http://shop.pau.softm.com/xsd", type = JAXBElement.class, required = false) protected JAXBElement&lt;Object&gt; name; @XmlElementRef(name = "name2", namespace = "http://shop.pau.softm.com/xsd", type = JAXBElement.class, required = false) protected JAXBElement&lt;Object&gt; name2; @XmlElementRef(name = "name3", namespace = "http://shop.pau.softm.com/xsd", type = JAXBElement.class, required = false) protected JAXBElement&lt;Object&gt; name3; @XmlElementRef(name = "name4", namespace = "http://shop.pau.softm.com/xsd", type = JAXBElement.class, required = false) protected JAXBElement&lt;Object&gt; name4; @XmlElementRef(name = "street", namespace = "http://shop.pau.softm.com/xsd", type = JAXBElement.class, required = false) protected JAXBElement&lt;Object&gt; street; @XmlElementRef(name = "zip", namespace = "http://shop.pau.softm.com/xsd", type = JAXBElement.class, required = false) protected JAXBElement&lt;Object&gt; zip; </code></pre> <p>How can i get XmlElement instead of XmlElementRef? What do i have to change in the xsd? The xsd is an extract from a wsdl and i want to use the resulting classes to call a webservice.</p> <p>siegfried</p> <p>OK, some mor infos here, can't answer my own question...</p> <p>I'm working with STS and Java6. in my build.xml is coded</p> <pre><code>&lt;!-- JAXB--&gt; &lt;taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask"&gt; &lt;classpath&gt; &lt;fileset dir="lib/ct" includes="*.jar" /&gt; &lt;/classpath&gt; &lt;/taskdef&gt; &lt;target name="gen.java" description="Generates the JAXB business objects"&gt; &lt;xjc destdir="src/gen" extension="true"&gt; &lt;schema dir="conf/webapp/WEB-INF/schema" includes="*.xsd" /&gt; &lt;binding dir="resources" includes="*.xjb" /&gt; &lt;/xjc&gt; &lt;/target&gt; </code></pre> <p>My binding.xjb looks like</p> <pre><code>&lt;jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" jxb:extensionBindingPrefixes="xjc"&gt; &lt;jxb:bindings schemaLocation="../conf/webapp/WEB-INF/schema/wsinapa.xsd" node="/s:schema"&gt; &lt;jxb:bindings node="/s:schema/s:element[@name='AccountStatus']"&gt; &lt;jxb:class name="AccountStatusRequest"/&gt; &lt;/jxb:bindings&gt; &lt;/jxb:bindings&gt; </code></pre> <p></p> <p>in the src dir are 2 .xsd that should be compiled. One of them compiled without errors, the other not. Both where extracted from wsdl files.</p> <p>cheers</p> <p>Siegfried</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload