下面是需要用流去读的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()方法就可以了!