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


  • 相关阅读:
    ASP.NET Core 中文文档 第四章 MVC(3.2)Razor 语法参考
    ASP.NET Core 中文文档 第四章 MVC(3.1)视图概述
    ASP.NET Core 中文文档 第四章 MVC(2.3)格式化响应数据
    ASP.NET Core 中文文档 第四章 MVC(2.2)模型验证
    ASP.NET Core 中文文档 第四章 MVC(2.1)模型绑定
    ASP.NET Core 中文文档 第四章 MVC(01)ASP.NET Core MVC 概览
    mysql 解除正在死锁的状态
    基于原生JS的jsonp方法的实现
    HTML 如何显示英文单、双引号
    win2008 r2 服务器php+mysql+sqlserver2008运行环境配置(从安装、优化、安全等)
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5141629.html
Copyright © 2011-2022 走看看