在XML中对节点进行排序

时间:2013-06-05 15:40:35

标签: java xml

如何在xml中对xml元素进行排序 例如 输入xml是这样的 人   一个   乙 雇员   一个   乙 人   C   d 雇员   C   d

现在我想将xml排序为喜欢 产量 人   一个   乙 人   C   d 雇员   一个   乙 雇员   C   d

那就是以Person开头的所有节点应先到然后是Employye节点......

我现在尝试这样,

BufferedReader docInput = new BufferedReader(new InputStreamReader(inputStream));
BufferedWriter docOutput = new BufferedWriter(new OutputStreamWriter(outputStream));
StringBuffer insb = new StringBuffer();

String line = "", segment="";
String beginSegment = "";

Vector a=new Vector();
Vector b=new Vector();

Properties prop = System.getProperties();
String lineSeparator = prop.getProperty("line.separator");

int start=0,pos=0;

try
{
    while ((line = docInput.readLine()) != null)
    {
       line.replace(lineSeparator,"");      
       insb.append(line);
    }

    pos=insb.indexOf(":Recipient");
    pos=pos-15;
    pos=insb.indexOf("<",pos);
    beginSegment=insb.substring(0,pos);             
    System.out.println(" Begin "+beginSegment);
    insb=insb.replace(0,pos,"");

    while(insb.indexOf("Recipient>")>0)
    {
        pos=insb.indexOf("Recipient>");
        segment=insb.substring(0,pos+10);
        a.add(segment);
        segment="";
        insb=insb.replace(0,pos+10,"");
    }

    for(int y=0;y<b.size();y++)
        if(b.get(y).toString().contains("Employee>"))
        {
            a.add(b.get(y).toString());
            b.remove(y);
        }

    for(int y=0;y<a.size();y++)
        b.add(a.get(y).toString());

    b.add(0,beginSegment);
    b.add(insb.toString());

    for(int y=0;y<b.size();y++)
        docOutput.write(b.get(y).toString());

    docOutput.close();
    docInput.close();
}

1 个答案:

答案 0 :(得分:0)

为什么不引用compareTo方法?

public int compareTo(String anotherString)

按字典顺序比较两个字符串。如果此String对象按字典顺序跟随参数字符串,则结果为正整数。如果字符串相等,结果为零; compareTo恰好在equals(Object)方法返回true时返回0。

无论如何,您应该使用XML Parser。这样,如果你扩展对象关系映射功能,我的意思是如果你得到一个Person或Employee的实例,你也可以在这些类中实现Comparable来按你喜欢的人排序