0

如何对 xml 中的 xml 元素进行排序,例如输入 xml 就像这样 Person A B Employee A B Person C D Employee C D

现在我想对 xml 进行排序以输出 Person A B Person C D Employee A B Employee 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();
}
4

1 回答 1

0

为什么不参考 compareTo 方法?

public int compareTo(String anotherString)

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

无论如何,您应该使用 XML Parser。这样,如果您扩展对象关系映射功能,我的意思是,如果您获得 Person 或 Employee 的实例,您还可以在这些类中实现 Comparable 以按照您喜欢的 People 进行排序

于 2013-06-05T15:57:29.967 回答