⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 embltransform.java

📁 EMBL文件格式转为xml 采用java编写
💻 JAVA
字号:
package textTransform;

import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.sax.SAXSource;

import java.io.*;
import java.net.URL;
import java.util.*;

import org.xml.sax.*;
import org.xml.sax.helpers.*;

public class EMBLTransform implements XMLReader
{
	
	private ContentHandler contentHandler = null;
	AttributesImpl attribs = new AttributesImpl();
	String namespaceURI = "";
	private char[] myChArray = new char[255];
	
	public final static String  ID="ID";
	public final static String  DT="DT";
	public final static String  DE="DE";
	public final static String  AC="AC";
	public final static String  SV="SV";
	public final static String  KW="KW";
	public final static String  OS="OS";
	public final static String  OC="OC";
	public final static String  RN="RN";
	public final static String  RA="RA";
	public final static String  RT="RT";
	public final static String  RL="RL";
	public final static String  RX="RX";
	public final static String  RC="RC";
	public final static String  RP="RP";
	public final static String  CC="CC";
	public final static String  DR="DR";
	public final static String  FH="FH";
	public final static String  FT="FT";
	public final static String  SQ="SQ";
	public final static String  source="source";
	public final static String  CDS="CDS";
	public final static String  exon="exon";
	public final static String  intron="intron";
	public final static String  gap="gap";
	public final static String  polyA_signal="polyA_signal";
	
	public void parse(InputSource source) throws IOException, SAXException
	{
	    InputStream is = source.getByteStream();
	    InputStreamReader istreamreader = new InputStreamReader(is); 
	    BufferedReader br = new BufferedReader(istreamreader);
	    StringBuffer buffer = new StringBuffer();
	    String line = "";
	    while ((line = br.readLine()) != null)
	    {
	    buffer.append(line+"\n");
	    }
	    if(buffer!=null){
	    	contentHandler.startDocument();
	    	contentHandler.startElement(namespaceURI, "Service", "Service", attribs);
	    	String[] EMBLelements = buffer.toString().split("XX\n");
	    	int numberOfEMBL = EMBLelements.length;
	    	//System.out.print(numberOfEMBL);
	    	for(int i=0; i<numberOfEMBL;i++) {
	    		readEMBL(EMBLelements[i]);
	    	}
	    	contentHandler.endDocument();
	    }   
	}
	
	private void readEMBL(String _EMBLelements)
		throws SAXException, IOException {
	    char[] id = _EMBLelements.substring(0,1).toCharArray();
	    switch(id[0]){
	    case 'I': readSimple(_EMBLelements);break;
	    case 'D': readSimple(_EMBLelements);break;
	    case 'A': readSimple(_EMBLelements);break;
	    //case 'S': readSimple(_EMBLelements);break;
	    case 'K': readSimple(_EMBLelements);break;
	    case 'O': readOR(_EMBLelements);break;
	    case 'R': readOR(_EMBLelements);break;
	    case 'C': readSimple(_EMBLelements);break;
	    case 'F': readF(_EMBLelements);break;
	    case 'S': readSQ(_EMBLelements);break;
	    }
	}
	
	private void readSimple(String _EMBLelements)
	throws SAXException, IOException {
		String[] simpleElement = _EMBLelements.split("\n");
		String id = _EMBLelements.substring(0,5).trim();
		String data = new String();
		int length=simpleElement.length;
		//System.out.print(length);
		for(int i=0;i<length;i++)
	    {			
			String dataSimple = simpleElement[i].substring(5).trim();
			data=data+" "+dataSimple;
	    }
		contentHandler.startElement(namespaceURI, id, id, attribs);
		contentHandler.characters(data.toCharArray(), 0, data.length()); 
		contentHandler.endElement(namespaceURI, id, id);
	}
	
	private void readOR(String _EMBLelements)
	throws SAXException, IOException {
		String[] simpleElement = _EMBLelements.split("\n");
		String[] id=new String[255];
		int j=0;
		id[j]= simpleElement[0].trim().substring(0,2);
		String data ="";
		int i;
		String dataSimple = simpleElement[0].trim().substring(5).trim();
		data=data+" "+dataSimple;
		for(i=1;i<simpleElement.length;i++)
		{
			if(!simpleElement[i].trim().substring(0,2).equals(id[j]))
			{
				sendSimpleElement(id[j],data);
				data="";
				j=j+1;
				id[j] = simpleElement[i].trim().substring(0,2);
			}
			dataSimple = simpleElement[i].trim().substring(5).trim();
			data=(data+" "+dataSimple).trim();			
		}
		sendSimpleElement(id[j],data);
	}
	
	private void readF(String _EMBLelements)
	throws SAXException, IOException {
		String[] simpleElement = _EMBLelements.split("\n");
		//FH
		String idfh = simpleElement[0].substring(0,2);
		contentHandler.startElement(namespaceURI, idfh, idfh, attribs);
		readSimple(simpleElement[0].substring(5));
		contentHandler.endElement(namespaceURI, idfh, idfh);
		//FT
		String idft = simpleElement[2].substring(0,2);
		contentHandler.startElement(namespaceURI, idft, idft, attribs);
		String FTdata= _EMBLelements.substring(_EMBLelements.indexOf("FT"));
		readFT(FTdata);
		contentHandler.endElement(namespaceURI, idft, idft);
	}
	
	private void readFT(String _FTdata)
	throws SAXException, IOException {
		String[] ftElement = _FTdata.split("FT");
		String[] id=new String[255];
		String[] ids=new String[255];
		int j=0,m=0;
		id[j]=ftElement[1].substring(5,18).trim();
		String data ="";
		contentHandler.startElement(namespaceURI, id[j], id[j], attribs);
		data=data+ftElement[1].substring(19).trim();
		for(int i=2; i<ftElement.length; i++)
		{	
			if(ftElement[i].trim().substring(0,1).equals("/"))
			{
				String[] FTselement = ftElement[i].substring(20).trim().split("=");
				m=m+1;
				ids[m]=FTselement[0];
				data=FTselement[1];
				if(i==ftElement.length-1||ftElement[i+1].trim().substring(0,1).equals("/") || !ftElement[i+1].substring(5,18).trim().equals(""))
				{
					sendSimpleElement(ids[m],data);
					data="";
				}
			}
			else if(ftElement[i].substring(5,18).trim().equals(""))
			{
				data=data+ftElement[i].substring(19).trim();
				if(ftElement[i+1].trim().substring(0,1).equals("/") || !ftElement[i+1].substring(5,18).trim().equals(""))
				{
					sendSimpleElement(ids[m],data);
					data="";
				}
			}
			else 
			{
				contentHandler.endElement(namespaceURI, id[j], id[j]);
				j=j+1;
				data=ftElement[i].substring(19).trim();
				id[j]=ftElement[i].substring(3,15).trim();
				contentHandler.startElement(namespaceURI, id[j], id[j], attribs);
				if(ftElement[i+1].trim().substring(0,1).equals("/") || !ftElement[i+1].substring(5,18).trim().equals(""))
				{
					sendSimpleElement("location",ftElement[i].substring(19).trim());
					data="";
				}	
			}
		}
		contentHandler.endElement(namespaceURI, id[j], id[j]);
	}
		
	private void readSQ(String _EMBLelements)
	throws SAXException, IOException {
		String[] simpleElement = _EMBLelements.split("\n");
		String data = simpleElement[0].substring(14).trim();
		sendSimpleElement("Sequence",data);
		data="\n";
		for(int i=1;i<simpleElement.length-1;i++)
		{
			String dataSimple = simpleElement[i].substring(0,70).trim();
			data=(data+" "+dataSimple).trim();
		}
		sendSimpleElement("SQ",data);
	}
	

	  private void sendSimpleElement(String _elemName, String _elemValue) throws SAXException {
		  contentHandler.startElement(namespaceURI,  _elemName, _elemName, attribs);
		  contentHandler.characters(_elemValue.toCharArray(), 0, _elemValue.length());
		  contentHandler.endElement(namespaceURI, _elemName, _elemName);    
	}

	
	public void parse(String uri) 
	{

	}
	public void setContentHandler(ContentHandler handler)
	{
		contentHandler = handler;
	}

	public ContentHandler getContentHandler()
	{
		return contentHandler;
	}
	
	public boolean getFeature(String s)		
	{
        return false;
	}

	public void setFeature(String s, boolean b)
	{
	}

	public Object getProperty(String s)
	{
        return null;
	}

	public void setProperty(String s, Object o)
	{
	}

	public void setEntityResolver(EntityResolver e)
	{
	}

	public EntityResolver getEntityResolver()
	{
		return null;
	}

	public void setDTDHandler(DTDHandler d)
	{
	}

	public DTDHandler getDTDHandler()
	{
		return null;
	}

	public void setErrorHandler(ErrorHandler handler)
	{
	}

	public ErrorHandler getErrorHandler()
	{
		return null;
	}	
	
	//===========================================================
	// Main method
	//===========================================================

	public static void main(String[] args) throws Exception
	{
        // construct SAXSource with our custom XMLReader
		FileInputStream fis = null;
		try {
		      fis = new FileInputStream("AB046566(EMBL).txt");
		    } catch(FileNotFoundException fnfe) {
		      System.out.println("Input source file not found.");  
		    }
		InputSource inputSource = new InputSource(fis);
        XMLReader parser	    = new EMBLTransform();
        SAXSource saxSource		= new SAXSource(parser, inputSource);
        		
        // construct a transformer using the generic stylesheet
        TransformerFactory factory = TransformerFactory.newInstance();
        StreamSource xslSource     = new StreamSource("generic.xsl");
        Transformer transformer    = factory.newTransformer(xslSource);
        
        // transform the SAXSource to the result
        StreamResult result = new StreamResult("properties.xml");        
        transformer.transform( saxSource, result);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -