2015-05-14 56 views
1

我想從使用intelliJ的現有XML文件生成XSD。但是,生成的xsd具有這個 - 'mixed =「true」'屬性,我不期望會出現,因爲最終生成的類(使用xjc)現在包含它的成員作爲我不想要的Serializable屬性。有誰知道我可以如何防止這種情況?mixed =「true」,同時從xml生成xsd

XML文件 -

<?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元素中。
+0

做了你所問。但我仍然遇到同樣的錯誤。 – Pratik

+0

你有沒有找到任何解決方案。我離開了一個星期。 –

+1

沒有。但是我意識到我正在使用xsd做錯誤的事情。我應該先製作一個xsd,而不是從XML中派生出來 – Pratik