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程序设计有所帮助。
热门推荐
10 五一公司放假祝福语简短
11 追星女孩的祝福语简短
12 给长辈端午祝福语 简短
13 生日祝福语有诗意简短
14 团圆日祝福语简短
15 中秋商务祝福语简短最新
16 温暖文艺简短祝福语短句
17 男孩上学祝福语简短的
18 入住酒店文案祝福语简短