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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索读取
, android编程
, xml文件
写入
安卓编程 读取xml文件、xml读取写入异常、c xml 读取数据 写入、android 写入xml文件、android xml写入,以便于您获取更多的相关知识。

时间: 2024-08-03 04:26:36

android编程之xml文件读取和写入方法_Android的相关文章

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

本文实例讲述了android编程之xml文件读取和写入方法.分享给大家供大家参考.具体分析如下: 一.环境: 主机:WIN8 开发环境:Eclipse 二.说明: 1.打开sd卡中的xml文件,如果不存在,这新建一个,并写入默认配置 2.读取xml文件 三.xml文件格式: <?xml version="1.0" encoding="UTF-8" standalone="true"?> -<config> <titl

android编程之XML文件解析方法详解(附源码)_Android

本文实例讲述了android编程之XML文件解析方法.分享给大家供大家参考,具体如下: 在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX.Pull.Dom解析方式.最近做了一个android版的CSDN阅读器,用到了其中的两种(sax,pull),今天对android解析xml的这三种方式进行一次总结. 今天解析的xml示例(channels.xml)如下: <?xml version="1.0" encoding="utf-8

android编程之XML文件解析方法详解(附源码)

本文实例讲述了android编程之XML文件解析方法.分享给大家供大家参考,具体如下: 在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX.Pull.Dom解析方式.最近做了一个android版的CSDN阅读器,用到了其中的两种(sax,pull),今天对android解析xml的这三种方式进行一次总结. 今天解析的xml示例(channels.xml)如下: <?xml version="1.0" encoding="utf-8

Android编程之SharedPreferences文件存储操作实例分析_Android

本文实例讲述了Android编程之SharedPreferences文件存储操作的方法.分享给大家供大家参考.具体分析如下: SharedPreferences类提供了一种简单的文件存储功能,像程序的配置文件可以通过它来实现. 源代码: package com.test.sharedpreferences; import android.app.Activity; import android.content.Context; import android.content.SharedPrefe

Android编程之SharedPreferences文件存储操作实例分析

本文实例讲述了Android编程之SharedPreferences文件存储操作的方法.分享给大家供大家参考.具体分析如下: SharedPreferences类提供了一种简单的文件存储功能,像程序的配置文件可以通过它来实现. 源代码: package com.test.sharedpreferences; import android.app.Activity; import android.content.Context; import android.content.SharedPrefe

Android平台基于Pull方式对XML文件解析与写入方法详解_Android

本文详细讲述了Android平台基于Pull方式对XML文件解析与写入方法.分享给大家供大家参考,具体如下: XML技术在跨平台的情况下的数据交互中得到了广泛的应用,假如我们需要开发一个Android应用程序,需要同服务器端进行数据交互,通过XML文件可以很方便的在Android平台和服务器之间进行数据传输,具体实现涉及到对XML文件进行解析及写入的技术.本文实现在Android平台上基于Pull方式对XML文件解析的技术. XmlPullParser是一个Java实现的开源API包(源码下载地

Android平台基于Pull方式对XML文件解析与写入方法详解

本文详细讲述了Android平台基于Pull方式对XML文件解析与写入方法.分享给大家供大家参考,具体如下: XML技术在跨平台的情况下的数据交互中得到了广泛的应用,假如我们需要开发一个Android应用程序,需要同服务器端进行数据交互,通过XML文件可以很方便的在Android平台和服务器之间进行数据传输,具体实现涉及到对XML文件进行解析及写入的技术.本文实现在Android平台上基于Pull方式对XML文件解析的技术. XmlPullParser是一个Java实现的开源API包(源码下载地

Android编程之include文件的使用方法_Android

本文实例分析了Android编程之include文件的使用方法.分享给大家供大家参考,具体如下: 记得很久以前,听一位大神说,程序员都很懒,不懒惰的程序员不是好程序员,当时不明白什么意思.后来慢慢的懂得了它的意思,好的程序员不要做重复的工作. 我们在android的布局文件中,常会遇到一些相同的布局,每个页面都写,一是比较麻烦,二是一旦有修改还得改多个文件.这个时候我们就可以用到include了. 非常简单的使用,下面看代码 include的文件scollandlisttitle.xml <?x

Android编程之include文件的使用方法

本文实例分析了Android编程之include文件的使用方法.分享给大家供大家参考,具体如下: 记得很久以前,听一位大神说,程序员都很懒,不懒惰的程序员不是好程序员,当时不明白什么意思.后来慢慢的懂得了它的意思,好的程序员不要做重复的工作. 我们在android的布局文件中,常会遇到一些相同的布局,每个页面都写,一是比较麻烦,二是一旦有修改还得改多个文件.这个时候我们就可以用到include了. 非常简单的使用,下面看代码 include的文件scollandlisttitle.xml <?x