下面是需要用流去读的xml文件:
<?xml version="1.0" encoding="UTF-8"?> <page pageId ="deskTop" pageTitle="我的桌面" pageVersion="1.0" cache="Check"> <body bgImage="$bgImage$"> <gridTable nameId="gid1" location="" size="" rows="3" cols="3"> <gridItem text="移动产品" url="$server_path$/Api.ashx?function=getGrpProduct&id_u=$id_u$" img="local://resources/desktop/2.png"/> <gridItem text="集团产品" url="$server_path$/Api.ashx?function=getProduct&id_u=$id_u$" img="local://resources/desktop/3.png"/> <gridItem text="知识库" url="$server_path$/Api.ashx?function=getKnowledgeTypes&id_u=$id_u$" img="local://resources/desktop/0.png"/> <gridItem text="信息采集" url="$server_path$/Api.ashx?function=getCollType&id_u=$id_u$" img="local://resources/desktop/1.png"/> <gridItem text="在线交流" url="$server_path$/Api.ashx?function=getMyQuestionList&id_u=$id_u$&id_acc=$id_acc$" img="local://resources/desktop/4.png"/> <gridItem text="通讯录" url="$server_path$/Api.ashx?function=getAddrTypes&id_u=$id_u$" img="local://resources/desktop/5.png"/> <gridItem text="广播信息" url="$server_path$/Api.ashx?function=getNewsList&id_u=$id_u$" img="local://resources/desktop/6.png"/> <gridItem text="辅助软件" url="$server_path$/Api.ashx?function=getHelpTool" img="local://resources/desktop/7.png"/> <gridItem text="退出系统" url="cmd://exit_app" img="local://resources/desktop/8.png"/> </gridTable> </body> </page>
首先我是用fileInputStream去读的,代码如下:
public static String readXml(String path){
StringBuffer sb = new StringBuffer();
try {
InputStream is = new FileInputStream(path);
byte[] buffer = new byte[1024];
while(true){
int length = is.read(buffer,0,1024);
if(length == -1) break;
length = is.read(buffer,0,1024);
sb.append(new String(buffer));
}
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString().trim();
}
可是读出来的后台得到的结果是:
i.ashx?function=getAddrTypes&id_u=39" img="local://resources/desktop/5.png"/> <gridItem text="骞挎挱淇℃伅" url="http://192.168.89.131/Api.ashx?function=getNewsList&id_u=39" img="local://resources/desktop/6.png"/> <gridItem text="杈呭姪杞欢" url="http://192.168.89.131/Api.ashx?function=getHelpTool" img="local://resources/desktop/7.png"/> <gridItem text="閫?鍑虹郴缁?" url="cmd://exit_app" img="local://resources/desktop/8.png"/> </gridTable> </body> </page>es/desktop/3.png"/> <gridItem text="鐭ヨ瘑搴?" url="http://192.168.89.131/Api.ashx?function=getKnowledgeTypes&id_u=39" img="local://resources/desktop/0.png"/> <gridItem text="淇℃伅閲囬泦" url="http://192.168.89.131/Api.ashx?function=getCollType&id_u=39" img="local://resources/desktop/1.png"/> <gridItem text="鍦ㄧ嚎浜ゆ祦" url="http://192.168.89.131/Api.ashx?function=getMyQuestionList&id_u=39&id_acc=64" img="local://resources/desktop/4.png"/> <gridItem text="閫氳褰?" url="http://192.168.89.131/Ap
不但错行,而且还存在乱码,所以我换成用reader.read()方法来读取,
Reader r = new InputStreamReader(is,"utf-8");
这样一来乱码问题是解决了,不过还是有错行的问题,所以正确代码如下:
public static String readXml(String path){
StringBuffer sb = new StringBuffer();
try {
InputStream is = new FileInputStream(path);
Reader r = new InputStreamReader(is,"utf-8");
BufferedReader br = new BufferedReader(r);
String str = "";
while(true){
//读取一行文字数据
str = br.readLine();
if(str == null){
break;
}
sb.append(str+"\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString().trim();
}
用BufferedReader.readLine()方法就可以了!