我有一个以下格式的文件,每个LINEBEGIN和LINEEND正文代表用户的数据。
<FILESTART
<LINEBEGIN
VALUE1=aa;
<VALUE2BEGIN
VALUE2=bb;
<VALUE2END
<VALUE3BEGIN
VALUE3=cc;
<VALUE3END
<VALUE3BEGIN
VALUE3=dd;
<VALUE3END
<VALUE3BEGIN
VALUE3=ee;
<VALUE3END
<TAG1BEGIN
VALUE4=ff;
VALUE5=<any>
<XML1>
<XML2>xx</XML2>
<XML3>xx</XML3>
<XML4>xx</XML4>
</XML1>
</any>;
<TAG1END
<TAG2BEGIN
VALUE4=gg;
VALUE5=<any>
<XML11>
<XML22>yy</XML22>
<XML33>yy</XML33>
<XML44>yy</XML44>
</XML11>
</any>;
<TAG2END
....
<LINEEND
<LINESTART
.
.
.
<LINEEND
....
<FILEEND
我的目标是使用JAVA重新格式化以下结构:
LINEBEGIN
VALUE1=aa;
VALUE2=bb;
VALUE3=cc;
VALUE3=dd;
VALUE3=ee;
VALUE4=ff;
VALUE5=<any><XML1><XML2>xx</XML2><XML3>xx</XML3><XML4>xx</XML4></XML1></any>;
VALUE4=gg;
VALUE5=<any><XML11><XML22>yy</XML22><XML33>yy</XML33><XML44>yy</XML44></XML11></any>;
LINEEND
LINEBEGIN
..
LINEEND
我最初使用下面的代码提取信息,但是我被困在格式化VALUE5(主要是我将连接VALUE5之后的任何文本行,直到到达TAGEND行。然后稍后将在以后的阶段解析此xml以提取信息)价值。 )。因为在这里我尝试了BufferedReader,它将逐行处理每一行。 那么有什么想法或提示如何格式化VALUE5行?
br = new BufferedReader(new FileReader(filename));
String[] row = null;
String sCurrentLine;
while ((sCurrentLine = br.readLine()) != null) {
boolean new_line = false;
if (sCurrentLine.equals("<LINEBEGIN")) {
System.out.println("=========================================line begin================");
} else if (sCurrentLine.equals("<LINEEND")) {
System.out.println("=========================== line end ======================");
}else{
//body
sCurrentLine = sCurrentLine.replaceAll("\t", "");
if(sCurrentLine.contains("VALUE1=")){
System.out.println(sCurrentLine);
}
if(sCurrentLine.contains("VALUE2=")){
System.out.println(sCurrentLine);
}
if(sCurrentLine.contains("VALUE3=")){
System.out.println(sCurrentLine);
}
if(sCurrentLine.contains("VALUE4=")){
System.out.println(sCurrentLine);
}
//VALUE5
}
}