gpt4 book ai didi

java - 从 xml 生成 xsd 时混合 ="true"

转载 作者:行者123 更新时间:2023-11-30 08:12:09 25 4
gpt4 key购买 nike

我正在尝试使用 intelliJ 从现有 XML 文件生成 XSD。但是生成的 xsd 有这个 - 'mixed = "true"' 属性,我不希望它出现,因为最终生成的类(使用 xjc)现在包含其成员作为我不想要的可序列化属性。有谁知道我该如何防止这种情况发生?

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;
}

}

最佳答案

删除 <dependency>``</dependency> 中的空格并将其提及为 <dependency/>

  • mixed=true 当需要在父级的子元素之间允许一些字符时出现,在这种情况下父级是 dependency 。所以我假设 dependency 中存在像空格这样的字符元素。

关于java - 从 xml 生成 xsd 时混合 ="true",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30235215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com