android编程之xml文件读取和写入方法
程序员文章站
2022-03-23 14:07:28
本文实例讲述了android编程之xml文件读取和写入方法。分享给大家供大家参考。具体分析如下:
一、环境:
主机:win8
开发环境:eclipse
二、说明:...
本文实例讲述了android编程之xml文件读取和写入方法。分享给大家供大家参考。具体分析如下:
一、环境:
主机:win8
开发环境:eclipse
二、说明:
1.打开sd卡中的xml文件,如果不存在,这新建一个,并写入默认配置
2.读取xml文件
三、xml文件格式:
<?xml version="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>
四、源代码:
package com.example.helloanychat; import java.io.file; import java.io.fileinputstream; import java.io.fileoutputstream; import java.io.ioexception; import java.io.stringwriter; import java.net.inet6address; import java.net.inetaddress; import java.net.networkinterface; import java.net.socketexception; import java.util.enumeration; import javax.xml.parsers.documentbuilder; import javax.xml.parsers.documentbuilderfactory; import android.os.environment; import android.util.log; import org.w3c.dom.document; import org.w3c.dom.element; import org.w3c.dom.nodelist; import org.xmlpull.v1.xmlpullparserfactory; import org.xmlpull.v1.xmlserializer; /** * 配置信息类 * 新建日期:2014/12/8 by jdh */ public class config implements if_config { //配置信息 private config_info config_info = new config_info(); /** * 构造函数 */ public config() { boolean ok; file sd_path; file file_cfg_dir; file file_cfg; fileoutputstream out; string str; fileinputstream in; //得到本机ip地址 config_info.local_ip = getlocalipaddress(); system.out.printf("本机ip:%s\n", config_info.local_ip); //获取sd卡目录 sd_path = environment.getexternalstoragedirectory(); //判断文件夹是否存在 file_cfg_dir = new file(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 = new file(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 = new fileoutputstream(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 (ioexception e) { // todo auto-generated catch block e.printstacktrace(); } } catch (ioexception e) { // todo auto-generated catch block 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 = new fileinputstream(file_cfg); documentbuilderfactory factory = documentbuilderfactory.newinstance(); documentbuilder builder = factory.newdocumentbuilder(); document document = builder.parse(in); // 获取根节点 element root = document.getdocumentelement(); nodelist node = 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 (exception e) { e.printstacktrace(); } } @override public config_info get_config_info() { return config_info; } /** * 得到本机ip地址 * @return 本机ip地址 */ private string getlocalipaddress() { try { for (enumeration<networkinterface> en = networkinterface .getnetworkinterfaces(); en.hasmoreelements();) { networkinterface intf = en.nextelement(); for (enumeration<inetaddress> enumipaddr = intf .getinetaddresses(); enumipaddr.hasmoreelements();) { inetaddress inetaddress = enumipaddr.nextelement(); //if (!inetaddress.isloopbackaddress()) { if (!inetaddress.isloopbackaddress() && !(inetaddress instanceof inet6address)) { return inetaddress.gethostaddress().tostring(); } } } } catch (socketexception ex) { log.e("wifipreference ipaddress", ex.tostring()); } return null; } /** * 生成xml配置文件的string数据流 * config_info的本机ip信息不会保存 * @param info:配置信息 * @return xml的string数据流 */ private string produce_xml_string(config_info info) { stringwriter stringwriter = new stringwriter(); try { // 获取xmlserializer对象 xmlpullparserfactory factory = xmlpullparserfactory.newinstance(); xmlserializer xmlserializer = 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 (exception e) { e.printstacktrace(); } return stringwriter.tostring(); } }
希望本文所述对大家的android程序设计有所帮助。
推荐阅读
-
java简单解析xls文件的方法示例【读取和写入】
-
Android中没有插入SD情况下的文件写入和读取方法
-
android编程之XML文件解析方法详解(附源码)
-
Android开发实现读取Assets下文件及文件写入存储卡的方法
-
Android中没有插入SD情况下的文件写入和读取方法
-
IOS UI学习教程之区分NSBundle和NSURL(读取文件、写入文件)
-
android编程之XML文件解析方法详解(附源码)
-
Android开发实现读取Assets下文件及文件写入存储卡的方法
-
python进阶教程之文本文件的读取和写入
-
IOS UI学习教程之区分NSBundle和NSURL(读取文件、写入文件)