Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中对xml文件中的元素进行排序_Java_Xml_Sorting_Indexing_Bubble Sort - Fatal编程技术网

在java中对xml文件中的元素进行排序

在java中对xml文件中的元素进行排序,java,xml,sorting,indexing,bubble-sort,Java,Xml,Sorting,Indexing,Bubble Sort,我想在java中根据用户选择的算法类型对xml文件中的元素进行排序。我合并了包含10个xml文件的xml文件。所以这就像用户首先选择算法的类型,然后根据用户的需要对元素进行排序。我该怎么做呢?请帮帮我 下面是我合并xml文件的方法 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.File

我想在java中根据用户选择的算法类型对xml文件中的元素进行排序。我合并了包含10个xml文件的xml文件。所以这就像用户首先选择算法的类型,然后根据用户的需要对元素进行排序。我该怎么做呢?请帮帮我

下面是我合并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>   

770820
640903
997132
193504
我想表现得像

 <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>

193504
640903
770820
997132

我不明白排序的含义,但请您知道,您的代码可能要简洁得多:

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));
//...
String pathTemplate=“C:\\Users\\project\\Numbers%d.xml”;
字符串mergedFilePath=“C:\\Users\\project\\mergedXML.xml”;
int nFiles=10;
File[]files=新文件[nFiles];

对于(inti=0;iYou应该使用数组(或集合)和循环,而不是复制/粘贴代码行(我不知道合并文件后你想做什么。但是我不想改变索引部分,你能告诉我怎么做吗?谢谢你的回复,我有一个xml文件,它是从上面开始的,我想做的是用户选择一种算法类型,然后当用户选择算法类型时,xml文件中的元素将根据选择的类型进行排序L算法,比如bubble或其他,显示已排序的元素,但我无法修复这一部分:sIt并不是那么难…只需实现您想向用户建议的所有排序算法,在ArrayList中检索合并文件的所有值,对其排序并写入输出文件。您无法执行哪部分。检索所有值ArrayList中合并文件的s:(您知道如何读取文件,并且有很多库支持在Java中使用XML。这应该不是问题。