2015-05-14 5 views
1

Я пытаюсь сгенерировать XSD из существующего XML-файла, используя intelliJ. Но генерируемый xsd имеет этот атрибут - mixed = "true", который я не ожидаю, поскольку конечный сгенерированный класс (используя xjc) теперь содержит его член как атрибут Serializable, который я не хочу. Кто-нибудь знает, как я мог это предотвратить?mixed = "true" при генерации xsd из xml

XML FILE -

<?xml version="1.0" encoding="UTF-8"?> 
<STEPS> 
    <STEP> 
     <taskId>1</taskId> 
     <dependency> 

     </dependency> 
     <task>Sample Step</task> 
     <techDetail>SVN Script path</techDetail> 
     <description>Sample step</description> 
     <comments>No commnets</comments> 
    </STEP> 
    <STEP> 
     <taskId>2</taskId> 
     <dependency> 
      <dependanttaskId>1</dependanttaskId> 
     </dependency> 
     <task>Second Sample Step</task> 
     <techDetail>SVN Script Path Again</techDetail> 
     <description>Sample step 2</description> 
     <comments>No comments again</comments> 
    </STEP> 
    <STEP> 
     <taskId>3</taskId> 
     <dependency> 
      <dependanttaskId>1</dependanttaskId> 
      <dependanttaskId>2</dependanttaskId> 
     </dependency> 
     <task>Third Sample Step</task> 
     <techDetail>SVN Script Path Again</techDetail> 
     <description>Sample step 3</description> 
     <comments>No comments again 3</comments> 
    </STEP> 
</STEPS> 

СГЕНЕРИРОВАННОГО XSD -

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="task"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
     <xs:enumeration value="Sample Step"/> 
     <xs:enumeration value="Second Sample Step"/> 
     <xs:enumeration value="Third Sample Step"/> 
     </xs:restriction> 
    </xs:simpleType> 
    </xs:element> 
    <xs:element name="comments"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
     <xs:enumeration value="No commnets"/> 
     <xs:enumeration value="No comments again"/> 
     <xs:enumeration value="No comments again 3"/> 
     </xs:restriction> 
    </xs:simpleType> 
    </xs:element> 
    <xs:element name="dependency"> 
    <xs:complexType mixed="true"> 
     <xs:sequence> 
     <xs:element ref="dependanttaskId" maxOccurs="unbounded" minOccurs="0"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    <xs:element name="techDetail"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
     <xs:enumeration value="SVN Script path"/> 
     <xs:enumeration value="SVN Script Path Again"/> 
     </xs:restriction> 
    </xs:simpleType> 
    </xs:element> 
    <xs:element name="description"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
     <xs:enumeration value="Sample step"/> 
     <xs:enumeration value="Sample step 2"/> 
     <xs:enumeration value="Sample step 3"/> 
     </xs:restriction> 
    </xs:simpleType> 
    </xs:element> 
    <xs:element name="STEP"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element ref="taskId"/> 
     <xs:element ref="dependency"/> 
     <xs:element ref="task"/> 
     <xs:element ref="techDetail"/> 
     <xs:element ref="description"/> 
     <xs:element ref="comments"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    <xs:element name="taskId"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
     <xs:enumeration value="1"/> 
     <xs:enumeration value="2"/> 
     <xs:enumeration value="3"/> 
     </xs:restriction> 
    </xs:simpleType> 
    </xs:element> 
    <xs:element name="dependanttaskId"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
     <xs:enumeration value="1"/> 
     <xs:enumeration value="2"/> 
     </xs:restriction> 
    </xs:simpleType> 
    </xs:element> 
    <xs:element name="STEPS"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element ref="STEP" maxOccurs="unbounded" minOccurs="0"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

СГЕНЕРИРОВАННЫЙ КЛАСС -

// 
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
// 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: 2015.05.14 at 04:02:08 PM IST 
// 


package generated; 

import java.io.Serializable; 
import java.util.ArrayList; 
import java.util.List; 
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.XmlMixed; 
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 ref="{}dependanttaskId" maxOccurs="unbounded" minOccurs="0"/> 
*  &lt;/sequence> 
*  &lt;/restriction> 
* &lt;/complexContent> 
* &lt;/complexType> 
* </pre> 
* 
* 
*/ 
@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "", propOrder = { 
    "content" 
}) 
@XmlRootElement(name = "dependency") 
public class Dependency { 

    @XmlElementRef(name = "dependanttaskId", type = JAXBElement.class, required = false) 
    @XmlMixed 
    protected List<Serializable> content; 

    /** 
    * Gets the value of the content property. 
    * 
    * <p> 
    * This accessor method returns a reference to the live list, 
    * not a snapshot. Therefore any modification you make to the 
    * returned list will be present inside the JAXB object. 
    * This is why there is not a <CODE>set</CODE> method for the content property. 
    * 
    * <p> 
    * For example, to add a new item, do as follows: 
    * <pre> 
    * getContent().add(newItem); 
    * </pre> 
    * 
    * 
    * <p> 
    * Objects of the following type(s) are allowed in the list 
    * {@link String } 
    * {@link JAXBElement }{@code <}{@link String }{@code >} 
    * 
    * 
    */ 
    public List<Serializable> getContent() { 
     if (content == null) { 
      content = new ArrayList<Serializable>(); 
     } 
     return this.content; 
    } 

} 

ответ

1

Удалить пустое пространство из <dependency>``</dependency> и упоминать его как <dependency/>

  • mixed = true появляется, когда требуется, чтобы некоторые символы между дочерними элементами родителя в этом случае родительским является dependency. поэтому я предполагаю, что в элементе dependency присутствует символ типа space.
+0

Сделал то, что вы просили. Но я все равно получаю ту же ошибку. – Pratik

+0

Вы нашли решение. Я отсутствовал на неделю. –

+1

Nope. Но я понял, что использую xsd для неправильного. Я должен сначала сделать xsd, а не вывести его из XML – Pratik

Смежные вопросы