JAVA 将xml Schema 文档转化成 XML文件

  1.  首先从https://jaxb.java.net/2.2.11/ 获取最新的jaxb 类
  2. 这里提供一个Schema文档
    
    
          
               
                   
              
          
     
              
                   
                   
                   
              
             
          
          
              
                   
                  
              
           
     
  3. 用xjc工具生成java类

xjc工具基于此模式来绑定一个模式到Java类,xjc命令行接口的一些选项列在下表:
-nv 对于输入的模式不执行严格的XML验证
-b 指定外部的绑定文件
-d 指定生成的文件的存放路径
-p 指定目标包
-classpath 指定classpath
-use-runtime impl.runtime包不被生成
-xmlschema 输入的模式是一个W3C XML模式(默认


配置jaxb类包







4) 将步骤3生成的四个JAVA文件导入到你JAVA工程下

 由JAVA类得到XML文件

package test;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

import core.CatalogType;

public class jaxbWriteXml {

	/**
	 * @param args
	 * @throws JAXBException 
	 */
	public static void main(String[] args) throws JAXBException {
		// TODO Auto-generated method stub
		try {
			File file=new File("testHomeWork.xml");
			JAXBContext jaxbContext=JAXBContext.newInstance(BookstoreType.class);
			Marshaller marshaller=jaxbContext.createMarshaller();
			//指定编码格式
			marshaller.setProperty(Marshaller.JAXB_ENCODING, "gbk");
			//是否格式化生成的xml
			marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
			//是否忽略xml头信息
			marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);
			
			BookstoreType bookstoreType=new BookstoreType();
			List bookTypes=new ArrayList();
			List authorNames=new ArrayList();
			//for(int i=0;i<3;i++)
			for(int i=0;i<3;i++)
			{
				AuthorName authorName=new AuthorName();
				authorName.setFirstName("张三"+i);
				authorName.setLastName("李四"+i);
				BookType bookType=new BookType();
				bookType.setGenre("IT类");
				bookType.setPrice(45.00+i*5);
				bookType.setTitle("Java每日一行第"+i+"行");
				bookType.author=authorName;
				bookTypes.add(bookType);
			}
			bookstoreType.book=bookTypes;
			
			marshaller.marshal(bookstoreType, new File("testHome.xml"));
			
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		
		

	}

}

结果:



    
        Java每日一行第0行
        
            张三0
            李四0
        
        45.0
    
    
        Java每日一行第1行
        
            张三1
            李四1
        
        50.0
    
    
        Java每日一行第2行
        
            张三2
            李四2
        
        55.0
    






你可能感兴趣的:(解析,java,生成,xml,Schema)