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

📄 csv2xml.java

📁 CroftSoft Code Library是一个开源的可移植的纯Java游戏库
💻 JAVA
字号:
     package com.croftsoft.apps.tab2xml;

     import java.io.*;
     import java.util.*;

     /*********************************************************************
     * Converts a comma separated value (CSV) file to XML.
     *
     * @version
     *   2003-05-12
     * @since
     *   2003-05-12
     * @author
     *   <a href="http://www.croftsoft.com/">David Wallace Croft</a>
     *********************************************************************/

     public final class  Csv2Xml
     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////
     {     private static final String [ ]  EMPTY_STRING_ARRAY       = new String [ 0 ];
     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////

     public static void  main ( String [ ]  args )
       throws Exception
     //////////////////////////////////////////////////////////////////////
     {       convert ( args [ 0 ], args [ 1 ] );     }
     public static void  convert (       String  inputCsvFilename,       String  outputXmlFilename )
       throws Exception
     //////////////////////////////////////////////////////////////////////
     {
       FileReader  fileReader = new FileReader ( inputCsvFilename );

       BufferedReader  bufferedReader = new BufferedReader ( fileReader );       String  line = bufferedReader.readLine ( );

       String [ ]  columnHeaders = parseLine ( line );

       int  columnCount = columnHeaders.length;

       PrintWriter  printWriter = new PrintWriter (
         new BufferedWriter ( new FileWriter ( outputXmlFilename ) ) );

       printWriter.println ( "<data>" );

       while ( ( line = bufferedReader.readLine ( ) ) != null )
       {
         int  columnIndex = 0;

         String [ ]  values = parseLine ( line );

         printWriter.println ( "  <record>" );

         for ( int  i = 0; i < columnCount; i++ )
         {
           if ( values [ i ] != null )
           {
             printWriter.println (
               "    <" + columnHeaders [ i ] + ">"
               + values [ i ]
               + "</" + columnHeaders [ i ] + ">" );
           }
         }

         printWriter.println ( "  </record>" );
       }

       printWriter.println ( "</data>" );

       printWriter.flush ( );

       printWriter.close ( );
     }     public static String [ ]  parseLine ( String  line )     //////////////////////////////////////////////////////////////////////
     {       List  stringList = new ArrayList ( );

       StringTokenizer  stringTokenizer
         = new StringTokenizer ( line, ",\"", true );       boolean  inQuotes = false;       boolean  stringStarted = false;       StringBuffer  stringBuffer = new StringBuffer ( );

       while ( stringTokenizer.hasMoreTokens ( ) )
       {         String  token = stringTokenizer.nextToken ( );         if ( token.equals ( "\"" ) )         {           if ( inQuotes )           {             inQuotes = false;             stringList.add ( stringBuffer.toString ( ) );             stringBuffer = new StringBuffer ( );             stringStarted = false;           }           else           {             inQuotes = true;             stringStarted = true;             stringBuffer = new StringBuffer ( );           }         }
         else if ( token.equals ( "," ) )         {           if ( inQuotes )           {             stringBuffer.append ( "," );           }           else           {             if ( stringStarted )             {               stringList.add ( stringBuffer.toString ( ) );               stringBuffer = new StringBuffer ( );             }             stringStarted = true;           }         }         else         {           if ( !stringStarted )           {             stringStarted = true;             stringBuffer = new StringBuffer ( );           }           stringBuffer.append ( token );         }       }       if ( stringStarted )       {         stringList.add ( stringBuffer.toString ( ) );       }       return ( String [ ] ) stringList.toArray ( EMPTY_STRING_ARRAY );
     }     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////
     private Csv2Xml ( ) { }

     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////
     }

⌨️ 快捷键说明

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