[size=9]本人今天遇到一个解析xml格式的字符串问题,刚开始时想通过把字符串读到xml文件,再用解析器解析(如果这样做的话,我将要生成无数个xml和解析无数次xml,因为我的需求是每执行一段业务逻辑将返回一段有规律的xml格式的字符串),这样有种哗众取宠的感觉,我是这样解决的:
[code] public static String[] parseString() {
String[] strArr = new String[4];
//特定的xml格式字符串
String str = "<ReturnValue><state>状态值</state><CommandID>CommandID</CommandID>" +
"<MsgSubSeq>MsgSubSeq</MsgSubSeq><Description>描述</Description>" +
"</ReturnValue>";
String state = str.substring(str.indexOf("<state>")+7,str.indexOf("</state>"));
String commandID = str.substring(str.indexOf("<CommandID>")+11,str.indexOf("</CommandID>"));
String msgSubSeq = str.substring(str.indexOf("<MsgSubSeq>")+11,str.indexOf("</MsgSubSeq>"));
String description = str.substring(str.indexOf("<Description>")+13,str.indexOf("</Description>"));
strArr[0] = state;
strArr[1] = commandID;
strArr[2] = msgSubSeq;
strArr[3] = description;
return strArr;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] strArr = parseString();
if(strArr != null && strArr.length > 1) {
for(int loop = 0; loop < strArr.length; loop++) {
System.out.println("strArr["+loop+"]==>"+strArr[loop]);
}
}
}[/code][/size]
[code] public static String[] parseString() {
String[] strArr = new String[4];
//特定的xml格式字符串
String str = "<ReturnValue><state>状态值</state><CommandID>CommandID</CommandID>" +
"<MsgSubSeq>MsgSubSeq</MsgSubSeq><Description>描述</Description>" +
"</ReturnValue>";
String state = str.substring(str.indexOf("<state>")+7,str.indexOf("</state>"));
String commandID = str.substring(str.indexOf("<CommandID>")+11,str.indexOf("</CommandID>"));
String msgSubSeq = str.substring(str.indexOf("<MsgSubSeq>")+11,str.indexOf("</MsgSubSeq>"));
String description = str.substring(str.indexOf("<Description>")+13,str.indexOf("</Description>"));
strArr[0] = state;
strArr[1] = commandID;
strArr[2] = msgSubSeq;
strArr[3] = description;
return strArr;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] strArr = parseString();
if(strArr != null && strArr.length > 1) {
for(int loop = 0; loop < strArr.length; loop++) {
System.out.println("strArr["+loop+"]==>"+strArr[loop]);
}
}
}[/code][/size]