2013-06-05 2 views
0

, как сделать сортировку XML-элементов в XML , например ввода XML, как это Человек Б Сотрудник Б Человек С D Сотрудник С DСортировка узлов в XML

Теперь я хочу, чтобы отсортировать XML нравится вывод Person B Person C D Сотрудник B Сотрудник C D

То есть все узлы, которые начинаются с лица должны прийти первым, то 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(); 
} 
+0

Почему вы не используете синтаксический анализатор XML? – Lucas

+0

вы хотите сказать domparser – vardit

+0

или парсер сакса ... или анализатор stax ... – Lucas

ответ

0

Почему вы не ссылаетесь на метод compareTo?

public int compareTo(String anotherString) 

Сравнивает две строки лексикографически. Результатом является положительное целое число, если этот объект String лексикографически следует за строкой аргумента. Результат равен нулю, если строки равны; compareTo возвращает 0 точно, когда метод equals (Object) возвращает true.

В любом случае, вы должны использовать XML-парсер. Таким образом, если вы расширяете функциональность объектно-реляционного сопоставления, я имею в виду, если вы получите экземпляр Person или Employee, вы также можете реализовать Comparable в этом классе, чтобы сортировать по своему нраву ваши люди.

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