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

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

(0)

相关推荐

  • Android 中读取Excel文件实例详解

    Android 中读取Excel文件实例详解 最近有个需求需要在app内置数据,新来的产品扔给了我两个Excel表格就不管了(两个表格格式还不统一...),于是通过度娘等方法找到了Android中读取Excel表格文件的一种方法,记录一下. 闲话一下Excel中工作簿和工作表的区别: 工作簿中包含有工作表.工作簿可以由一张或多张工作表组成,一个工作簿就是一个EXCEL表格文件. 好了,开始读取表格文件吧. 前提 首先,我们假设需要读取的表格文件名字为test.xls, 位于assets根目录下.

  • android通过jxl读excel存入sqlite3数据库

    复制代码 代码如下: package com.demo.day20140228; import java.io.File;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;import java.sql.Statement; import jxl.Cell;import jxl.Sheet;import jx

  • 基于Android XML解析与保存的实现

    解析XML文件:在Android平台上可以使用SAX.DOM和Android附带的pull解析器解析XML文件:pull解析器提供了各种事件,使用parser.next()方法进入下一个元素并触发相应事件,pull解析器产生的事件是一个数字,可以通过switch对感兴趣的事件进行处理:通过paser.nextText()方法可以获取下一个Text类型的节点的值:http://xmlpull.org/xmlpull-website/impls.shtml; 读取XMLXmlPullParser p

  • Android中使用sax解析xml文件的方法

    SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备. SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析文档的过程中,SAX会判断当前读到的字符是否合法XML 语法中的某部分,如果符合就会触发事件.所谓事件,其实就是一些回调(callback)方法,这些方法(事件)定义在ContentHandler接口.下面是一些ContentHandler接口常用的方法: startDocument():当遇到文档的开头的时候,调用

  • Android操作Excel文件的功能实现

    Android中操作Excel文件导出报表时主要采用开源库jxl,最早用在java上,但也可用于Android.与之类似的POI,因为依赖库众多,所以只能用于java,而不能用于Android. 使用jxl需要在Android工程中导入jxl.jar包,jxl可以完成Excel的基本读写操作,其支持与不支持的情况如下: 1.jxl只支持Excel2003格式,不支持Excel2007格式.即支持xls文件,不支持xlsx文件. 2.jxl不支持直接修改excel文件,但可通过复制新文件覆盖原文件

  • Android开发实现读取excel数据并保存为xml的方法

    本文实例讲述了Android开发实现读取excel数据并保存为xml的方法.分享给大家供大家参考,具体如下: 前阵子,公司请外面人翻译了一些android中values中的一些strings,然而保存的都是excel格式,如果单纯的将excel中的数据粘贴到指定的xml中的话,工作量非常的大,于是,自己写了个简单的demo,将excel中的数据读取并保存为xml对应的数据,下面的demo和图片展示: 1.数据保存在BeanValue中,包括key和value,方便后续数据读取 package c

  • Android应用读取Excel文件的方法

    本文实例讲述了Android应用读取Excel文件的方法.分享给大家供大家参考,具体如下: ReadExcel.java文件: public class ReadExcel extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState)

  • android操作XML的几种方法总结

    XML作为一种业界公认的数据交换格式,在各个平台与语言之上,都有广泛使用和实现.其标准型,可靠性,安全性......毋庸置疑.在android平台上,我们要想实现数据存储和数据交换,经常会使用到xml数据格式和xml文件. 小提示:android中存储数据一般有如下几种:SharedPreferences(参数化),XML文件,sqllite数据库,网络,ContentProvider(内容提供者)等. 在android中,操作xml文件,一般有几种方式:SAX操作,Pull操作,DOM操作等.

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

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

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

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

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

  • Android中对xml文件解析的3种方式总结

    前言 xml 是数据传输的一种格式,Android 中的布局文件.设置文件等都采用它来表示.Android 中对 xml 文件的解析也有多种方式,下面介绍常用的 3 种方式: Dom . SAX 和 dom4j.下面话不多说了,来一起看看详细的介绍吧. 先看一个简单的 xml 文件: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <书 出版社="骏马&qu

  • Android编程之canvas绘制各种图形(点,直线,弧,圆,椭圆,文字,矩形,多边形,曲线,圆角矩形)

    本文实例讲述了Android编程之canvas绘制各种图形的方法.分享给大家供大家参考,具体如下: 1.首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host the draw calls (writing into

  • Android编程之在SD卡上进行文件读写操作实例详解

    本文实例讲述了Android编程之在SD卡上进行文件读写操作的方法.分享给大家供大家参考,具体如下: 很多知识只有真正理解掌握之后才能运用自如,举一反三.对Java中的文件操作和android系统SD卡里面的文件操作,你觉得有区别吗,显然没有本质区别,如果勉强说有,那也是不足为道滴,但我们在实际运用中却要注意如下几点,不然问题会缠上你. 1.首先想要对android系统SD卡里文件操作需要添加使用权限: android系统是不会让外来程序随意动自己内存的,如果没有许可证,不好意思,不准你动我地盘

  • Android API编程之Assets文件操作示例

    本文实例讲述了Android API Assets文件操作.分享给大家供大家参考,具体如下: public class ReadAssetActivity extends Activity { private TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.re

  • Android编程之SMS读取短信并保存到SQLite的方法

    本文实例讲述了Android编程之SMS读取短信并保存到SQLite的方法.分享给大家供大家参考,具体如下: Android 之 SMS 短信在Android系统中是保存在SQLite数据库中的,但不让其它程序访问(Android系统的安全机制) 现在我们在读取手机内的SMS短信,先保存在我们自己定义的SQLite数据库中,然后读取SQLite数据库提取短信,并显示 SMS短信SQLite存取代码: package com.homer.sms; import java.sql.Date; imp

随机推荐