zoukankan      html  css  js  c++  java
  • 打印org.eclipse.xsd.XSDSchema对象

    由于网上关于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("<!-- ===== Schema Composition =====");
    	 printDirectives("  ", xsdSchema);
            System.out.println("-->");
            
            System.out.println("<!-- [ " + xsdSchema.getSchemaLocation() + " ] -->");
            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("<schema targetNamespace="");
    		if (xsdSchema.getTargetNamespace() != null) {
    			System.out.print(xsdSchema.getTargetNamespace());
    		}
    		System.out.print("" schemaLocation="");
    		if (xsdSchema.getSchemaLocation() != null) {
    			System.out.print(xsdSchema.getSchemaLocation());
    		}
    		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 + "  <referencingDirectives>");
    			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("<import namespace="");
    					if (xsdImport.getNamespace() != null) {
    						System.out.print(xsdImport.getNamespace());
    					}
    					System.out.print("" schemaLocation="");
    				} else if (xsdSchemaDirective instanceof XSDRedefine) {
    					System.out.print("<redefine schemaLocation="");
    				} else if (xsdSchemaDirective instanceof XSDInclude) {
    					System.out.print("<include schemaLocation="");
    				}
    				if (xsdSchemaDirective.getSchemaLocation() != null) {
    					System.out.print(xsdSchemaDirective.getSchemaLocation());
    				}
    				System.out.println(""/>");
    				System.out.println(indent + "    </schema>");
    			}
    			System.out.println(indent + "  </referencingDirectives>");
    		}
    
    		if (!xsdSchema.getIncorporatedVersions().isEmpty()) {
    			System.out.println(indent + "  <incorporatedVersions>");
    			for (XSDSchema incorporatedVersion : xsdSchema
    					.getIncorporatedVersions()) {
    				printDirectives(indent + "    ", incorporatedVersion);
    			}
    			System.out.println(indent + "  </incorporatedVersions>");
    		}
    
    		System.out.println(indent + "</schema>");
    	}
    
    	
    }
    


  • 相关阅读:
    自学python:python学习笔记之Ubuntu 16.04网络的配置
    Python 3 中字符串和 bytes 的区别
    Python map学习笔记
    Python lambda 知识点
    Eclipse中Activiti插件的安装
    Activiti简介
    Jquery ajax回调函数不执行
    Spring Boot安装及入门实现
    mysql给root开启远程访问权限
    linux下安装Tomcat
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5141629.html
Copyright © 2011-2022 走看看