因为网上关于Eclipse XSD的中文资料比较少,但是有的时候,我们需要使用Eclipse XSD的API去构造或者修改一个XSD文件。那么当我们创建了org.eclipse.xsd.XSDSchema的对象,并已经在里面添加或者修改许多的元素类型等信息后,我们想知道我们的添加或者修改是否有效。那么这个时候我们应该怎么办呢?
有两种方式,
(1)我们把生成的org.eclipse.xsd.XSDSchema的对象,写到一个文件里面去
(2)另外一种方式就是直接把XSDSchema对象转成一个字符串,然后把XSDSchema代码的XSD打印出来。
在我们的代码调试过程中,当然是第二种方式更为的方便和快捷。其具体的代码方法如下:
import org.eclipse.xsd.XSDImport; import org.eclipse.xsd.XSDInclude; import org.eclipse.xsd.XSDRedefine; import org.eclipse.xsd.XSDSchema; import org.eclipse.xsd.XSDSchemaDirective; import org.eclipse.xsd.util.XSDResourceImpl; import org.w3c.dom.Element; public class SchemaPrintService { public static void printSchema(XSDSchema xsdSchema){ System.out.println(""); System.out.println(""); xsdSchema.updateElement(); Element element = xsdSchema.getElement(); if (element != null){ // Print the serialization of the model. XSDResourceImpl.serialize(System.out, element); } } private static void printSchemaStart(XSDSchema xsdSchema) { System.out.print(""); } private static void printDirectives(String indent, XSDSchema xsdSchema) { System.out.print(indent); printSchemaStart(xsdSchema); System.out.println(); if (!xsdSchema.getReferencingDirectives().isEmpty()) { System.out.println(indent + " "); } System.out.println(indent + " "); } if (!xsdSchema.getIncorporatedVersions().isEmpty()) { System.out.println(indent + ""); for (XSDSchemaDirective xsdSchemaDirective : xsdSchema.getReferencingDirectives()) { XSDSchema referencingSchema = xsdSchemaDirective.getSchema(); System.out.print(indent + " "); printSchemaStart(referencingSchema); System.out.println(); System.out.print(indent + " "); if (xsdSchemaDirective instanceof XSDImport) { XSDImport xsdImport = (XSDImport) xsdSchemaDirective; System.out.print(" "); System.out.println(indent + " "); for (XSDSchema incorporatedVersion : xsdSchema .getIncorporatedVersions()) { printDirectives(indent + " ", incorporatedVersion); } System.out.println(indent + " "); } System.out.println(indent + ""); } }