2014-09-13 5 views
-1

Я хочу сортировать элементы в файле xml в соответствии с выбранным типом алгоритма пользователем в java.i, который объединил xml-файл, содержащий 10 xml-файлов. поэтому он будет похож на первый пользовательский тип выбора алгоритма, а затем программные элементы сортировки по мере того, как пользователь хочет. Как я могу это сделать? Просьба помочь мнесортировка элементов из xml-файла в java

вот как я слился XML файлы

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class Merge2 { 

public static void main(String[] args) { 
    String sourceFile1Path = "C:\\Users\\project\\Numbers1.xml"; 
    String sourceFile2Path = "C:\\Users\\project\\Numbers2.xml"; 
    String sourceFile3Path = "C:\\Users\\project\\Numbers3.xml"; 
    String sourceFile4Path = "C:\\Users\\project\\Numbers4.xml"; 
    String sourceFile5Path = "C:\\Users\\project\\Numbers5.xml"; 
    String sourceFile6Path = "C:\\Users\\project\\Numbers6.xml"; 
    String sourceFile7Path = "C:\\Users\\project\\Numbers7.xml"; 
    String sourceFile8Path = "C:\\Users\\project\\Numbers8.xml"; 
    String sourceFile9Path = "C:\\Users\\project\\Numbers9.xml"; 
    String sourceFile10Path = "C:\\Users\\project\\Numbers10.xml"; 

    String mergedFilePath = "C:\\Users\\project\\mergedXML.xml"; 

    File[] files = new File[10]; 
    files[0] = new File(sourceFile1Path); 
    files[1] = new File(sourceFile2Path); 
    files[2] = new File(sourceFile3Path); 
    files[3] = new File(sourceFile4Path); 
    files[4] = new File(sourceFile5Path); 
    files[5] = new File(sourceFile6Path); 
    files[6] = new File(sourceFile7Path); 
    files[7] = new File(sourceFile8Path); 
    files[8] = new File(sourceFile9Path); 
    files[9] = new File(sourceFile10Path); 


    File mergedFile = new File(mergedFilePath); 

    mergeFiles(files, mergedFile); 
} 
public static void mergeFiles(File[] files, File mergedFile) { 

    FileWriter fstream = null; 
    BufferedWriter out = null; 
    try { 
     fstream = new FileWriter(mergedFile, true); 
     out = new BufferedWriter(fstream); 
    } catch (IOException e1) { 
     e1.printStackTrace(); 
    } 

    for (File f : files) { 
     System.out.println("merging: " + f.getName()); 
     FileInputStream fis; 
     try { 
      fis = new FileInputStream(f); 
      BufferedReader in = new BufferedReader(new InputStreamReader(fis)); 

      String aLine; 
      while ((aLine = in.readLine()) != null) { 
       out.write(aLine); 
       out.newLine(); 
      } 

      in.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    try { 
     out.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 

}

и мой слитый файл XML начинается, как показано ниже

<numberList> 
<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<number index="1">770820</number> 
<number index="2">640903</number> 
<number index="3">997132</number> 
<number index="4">193504</number> 

я хочу, чтобы показать, как

<numberList> 
<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<number index="1">193504</number> 
<number index="2">640903</number> 
<number index="3">770820</number> 
<number index="4">997132</number> 
+0

Вы должны использовать массивы (или коллекции) и циклы вместо копирования/вставки строк кода. Кстати, я не получаю то, что вы хотите сделать после слияния файлов. – Dici

+0

, но я не хочу менять часть индекса, не могли бы вы показать мне, как я могу это сделать? – sezen

ответ

0

Я не понимаю, сортировать вещь, но только для вас, чтобы знать, что ваш код может быть гораздо более кратким:

String pathTemplate = "C:\\Users\\project\\Numbers%d.xml"; 
String mergedFilePath = "C:\\Users\\project\\mergedXML.xml"; 
int nFiles   = 10; 
File[] files   = new File[nFiles]; 

for (int i=0 ; i<nFiles ; i++) 
    files[i] = new File(String.format(pathTemplate,i + 1)); 
//... 

Если вы объяснить понятнее проблему о сортировке файла слияния я завершить свой ответ.

+0

спасибо за ответ, у меня есть xml-файл который начинается, как и выше, и что я хочу сделать, так это то, что пользователь выбирает тип алгоритма, тогда, когда пользователь выбирает тип алгоритма, элементы в XML-файле будут отсортированы в соответствии с выбранным алгоритмом, пусть говорят пузырь или другие, и покажут отсортированные элементы , но я не могу исправить эту часть: s – sezen

+0

Это не так сложно ... просто реализовать все алгоритмы сортировки, которые вы хотите предложить пользователю, получить все значения объединенного файла в ArrayList, отсортировать его и записать в выходной файл .Какой частью этого вы не можете сделать. – Dici

+0

получить все значения объединенного файла в ArrayList :( – sezen

Смежные вопросы