入力xmlなどのxmlでxml要素のソートを行う方法は、このようなものです Person A B Employee A B Person C D Employee C D
今、出力 Person A B Person C D Employee A B Employee C D のように xml をソートしたい
つまり、Person で始まるすべてのノードが最初に来て、次に Employee ノードが来ます...
今このようにしようとしています、
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();
}