<complexType name="spThread">
<sequence>
<element name="SPThreadID" type="int" />
<element name="durtime" minOccurs="0" default="0">
<simpleType>
<restriction base="int">
<minInclusive value="0" />
</restriction>
</simpleType>
</element>
<element name="minexecutions" minOccurs="0" default="0">
<simpleType>
<restriction base="int">
<minInclusive value="0" />
</restriction>
</simpleType>
</element>
<element name="numThreads" type="int" />
<element name="procedures" type="spm:procedure" minOccurs="1"
maxOccurs="unbounded" />
</sequence>
</complexType>
我想用java代码生成这种类型的.xsd文件..?我怎么能这样做??
特别是如何生成简单类型元素并对其进行限制?
答案 0 :(得分:1)
我建议您使用JAXB来执行任何XML任务。但通常手动生成XSD文件,然后使用XSD文件以编程方式生成XML文件。你想要开发什么?
答案 1 :(得分:1)
您可以利用现有的0
类型,而不是创建自己的简单类型来表示以xs:nonNegativeInteger
开头的整数。我将举例说明。
<强> SpThread 强>
您可以使用@XmlSchemaType
注释指定应在字段/属性的XML架构中生成的类型。
package forum11667335;
import javax.xml.bind.annotation.XmlSchemaType;
public class SpThread {
private int durTime;
@XmlSchemaType(name="nonNegativeInteger")
public int getDurTime() {
return durTime;
}
public void setDurTime(int durTime) {
this.durTime = durTime;
}
}
<强>演示强>
您可以使用generateSchema
上的JAXBContext
方法生成XML架构:
package forum11667335;
import java.io.IOException;
import javax.xml.bind.*;
import javax.xml.transform.Result;
import javax.xml.transform.stream.StreamResult;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(SpThread.class);
jc.generateSchema(new SchemaOutputResolver() {
@Override
public Result createOutput(String namespaceUri, String suggestedFileName) throws IOException {
StreamResult result = new StreamResult(System.out);
result.setSystemId(suggestedFileName);
return result;
}
});
}
}
<强>输出强>
以下是生成的XML架构。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="spThread">
<xs:sequence>
<xs:element name="durTime" type="xs:nonNegativeInteger"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
答案 2 :(得分:0)
您可以使用任何XML处理API来实现此目的。 JDOM就是其中之一。如果您想要一个特定于构建XML Schema的API,然后将其序列化为XML,那么您可能需要查看Eclipse MDT API。
答案 3 :(得分:0)
您可以使用Java2Schema工具从java类生成模式,也可以尝试使用JaxB 2.0