android编程之xml文件读取和写入方法
本文实例讲述了android编程之xml文件读取和写入方法。分享给大家供大家参考。具体分析如下:
一、环境:
主机:WIN8
开发环境:Eclipse
二、说明:
1.打开sd卡中的xml文件,如果不存在,这新建一个,并写入默认配置
2.读取xml文件
三、xml文件格式:
<?xmlversion="1.0"encoding="UTF-8"standalone="true"?> -<config> <title>远程视频会见系统</title> <local_port>12600</local_port> <schedule_service_ip>10.58.1.59</schedule_service_ip> <schedule_service_port>12601</schedule_service_port> </config>
四、源代码:
packagecom.example.helloanychat; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileOutputStream; importjava.io.IOException; importjava.io.StringWriter; importjava.net.Inet6Address; importjava.net.InetAddress; importjava.net.NetworkInterface; importjava.net.SocketException; importjava.util.Enumeration; importjavax.xml.parsers.DocumentBuilder; importjavax.xml.parsers.DocumentBuilderFactory; importandroid.os.Environment; importandroid.util.Log; importorg.w3c.dom.Document; importorg.w3c.dom.Element; importorg.w3c.dom.NodeList; importorg.xmlpull.v1.XmlPullParserFactory; importorg.xmlpull.v1.XmlSerializer; /** *配置信息类 *新建日期:2014/12/8byjdh */ publicclassConfigimplementsIF_Config{ //配置信息 privateConfig_Infoconfig_info=newConfig_Info(); /** *构造函数 */ publicConfig(){ booleanok; Filesd_path; Filefile_cfg_dir; Filefile_cfg; FileOutputStreamout; Stringstr; FileInputStreamin; //得到本机ip地址 config_info.local_ip=getLocalIpAddress(); System.out.printf("本机ip:%s\n",config_info.local_ip); //获取SD卡目录 sd_path=Environment.getExternalStorageDirectory(); //判断文件夹是否存在 file_cfg_dir=newFile(sd_path.getPath()+"//Remote_Meeting"); if(!file_cfg_dir.exists()&&!file_cfg_dir.isDirectory()){ System.out.println("配置文件夹Remote_Meeting不存在!"); ok=file_cfg_dir.mkdirs(); if(ok){ System.out.println("创建文件夹成功!"); }else{ System.out.println("创建文件夹失败!"); } } //判断配置文件是否存在 file_cfg=newFile(file_cfg_dir.getPath(),"cfg.xml"); if(!file_cfg.exists()) { System.out.println("配置文件cfg.xml不存在!"); try{ file_cfg.createNewFile(); System.out.println("创建文件cfg.xml成功!"); //生成初始化的配置数据 try{ out=newFileOutputStream(file_cfg); //保存默认配置 config_info.title="远程视频会见系统"; config_info.local_port=12600; config_info.schedule_server_ip="10.58.1.59"; config_info.schedule_server_port=12601; str=produce_xml_string(config_info); out.write(str.getBytes()); out.close(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } config_info.title="远程"; config_info.local_port=126; config_info.schedule_server_ip="10.5"; config_info.schedule_server_port=12; System.out.printf("----222222222%s,%d,%s,%d\n",config_info.title,config_info.local_port, config_info.schedule_server_ip,config_info.schedule_server_port); //解析xml文件 try{ in=newFileInputStream(file_cfg); DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance(); DocumentBuilderbuilder=factory.newDocumentBuilder(); Documentdocument=builder.parse(in); //获取根节点 Elementroot=document.getDocumentElement(); NodeListnode=root.getChildNodes(); //获得第1子节点:标题 config_info.title=node.item(0).getFirstChild().getNodeValue(); //获得第2子节点:本机端口 config_info.local_port=Integer.parseInt(node.item(1).getFirstChild().getNodeValue()); //获得第3子节点:调度服务器ip config_info.schedule_server_ip=node.item(2).getFirstChild().getNodeValue(); //获得第4子节点:调度服务器端口 config_info.schedule_server_port=Integer.parseInt(node.item(3).getFirstChild().getNodeValue()); System.out.printf("----222222222%s,%d,%s,%d\n",config_info.title,config_info.local_port, config_info.schedule_server_ip,config_info.schedule_server_port); }catch(Exceptione){ e.printStackTrace(); } } @Override publicConfig_Infoget_config_info(){ returnconfig_info; } /** *得到本机ip地址 *@return本机ip地址 */ privateStringgetLocalIpAddress(){ try{ for(Enumeration<NetworkInterface>en=NetworkInterface .getNetworkInterfaces();en.hasMoreElements();){ NetworkInterfaceintf=en.nextElement(); for(Enumeration<InetAddress>enumIpAddr=intf .getInetAddresses();enumIpAddr.hasMoreElements();){ InetAddressinetAddress=enumIpAddr.nextElement(); //if(!inetAddress.isLoopbackAddress()){ if(!inetAddress.isLoopbackAddress()&&!(inetAddressinstanceofInet6Address)){ returninetAddress.getHostAddress().toString(); } } } }catch(SocketExceptionex){ Log.e("WifiPreferenceIpAddress",ex.toString()); } returnnull; } /** *生成xml配置文件的String数据流 *Config_Info的本机ip信息不会保存 *@paraminfo:配置信息 *@returnxml的String数据流 */ privateStringproduce_xml_string(Config_Infoinfo){ StringWriterstringWriter=newStringWriter(); try{ //获取XmlSerializer对象 XmlPullParserFactoryfactory=XmlPullParserFactory.newInstance(); XmlSerializerxmlSerializer=factory.newSerializer(); //设置输出流对象 xmlSerializer.setOutput(stringWriter); //开始标签 xmlSerializer.startDocument("utf-8",true); xmlSerializer.startTag(null,"config"); //标题 xmlSerializer.startTag(null,"title"); xmlSerializer.text(info.title); xmlSerializer.endTag(null,"title"); //本机端口 xmlSerializer.startTag(null,"local_port"); xmlSerializer.text(Integer.toString(info.local_port)); xmlSerializer.endTag(null,"local_port"); //调度服务器ip xmlSerializer.startTag(null,"schedule_service_ip"); xmlSerializer.text(info.schedule_server_ip); xmlSerializer.endTag(null,"schedule_service_ip"); //调度服务器端口 xmlSerializer.startTag(null,"schedule_service_port"); xmlSerializer.text(Integer.toString(info.schedule_server_port)); xmlSerializer.endTag(null,"schedule_service_port"); xmlSerializer.endTag(null,"config"); xmlSerializer.endDocument(); }catch(Exceptione){ e.printStackTrace(); } returnstringWriter.toString(); } }
希望本文所述对大家的Android程序设计有所帮助。