当前位置: 移动技术网 > IT编程>移动开发>Android > android编程之xml文件读取和写入方法

android编程之xml文件读取和写入方法

2019年07月24日  | 移动技术网IT编程  | 我要评论

苏州网站优化,廊坊梨园春,plus28 讨论区

本文实例讲述了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程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网