热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

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

这篇文章主要介绍了android编程之xml文件读取和写入方法,涉及Android针对XML文件的相关操作技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了android编程之xml文件读取和写入方法。分享给大家供大家参考。具体分析如下:

一、环境:

主机:WIN8
开发环境:Eclipse

二、说明:

1.打开sd卡中的xml文件,如果不存在,这新建一个,并写入默认配置
2.读取xml文件

三、xml文件格式:

<&#63;xml version="1.0" encoding="UTF-8" standalOne="true"&#63;> 
- 
 
12600 
10.58.1.59
12601 

四、源代码:

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 en = NetworkInterface 
     .getNetworkInterfaces(); en.hasMoreElements();) { 
    NetworkInterface intf = en.nextElement(); 
    for (Enumeration 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程序设计有所帮助。


推荐阅读
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • Android 九宫格布局详解及实现:人人网应用示例
    本文深入探讨了人人网Android应用中独特的九宫格布局设计,解析其背后的GridView实现原理,并提供详细的代码示例。这种布局方式不仅美观大方,而且在现代Android应用中较为少见,值得开发者借鉴。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文介绍了Android开发中Intent的基本概念及其在不同Activity之间的数据传递方式,详细展示了如何通过Intent实现Activity间的跳转和数据传输。 ... [详细]
  • 优化 Android 按钮状态下的背景和文本颜色变化
    本文介绍如何通过 Android 的 Selector 实现按钮在不同状态下(如按压)的背景和文本颜色动态变化。我们将详细讲解实现步骤,并提供完整的代码示例。 ... [详细]
  • 本文详细介绍超文本标记语言(HTML)的基本概念与语法结构。HTML是构建网页的核心语言,通过标记标签描述页面内容,帮助开发者创建结构化、语义化的Web页面。 ... [详细]
  • 本文介绍了ArcXML配置文件的分类及其在不同服务中的应用,详细解释了地图配置文件的结构和功能,包括其在Image Service、Feature Service以及ArcMap Server中的使用方法。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • Git管理工具SourceTree安装与使用指南
    本文详细介绍了Git管理工具SourceTree的安装、配置及团队协作方案,旨在帮助开发者更高效地进行版本控制和项目管理。 ... [详细]
  • Struts与Spring框架的集成指南
    本文详细介绍了如何将Struts和Spring两个流行的Java Web开发框架进行整合,涵盖从环境配置到代码实现的具体步骤。 ... [详细]
  • 本文介绍了如何通过设置背景形状来轻松地为 Android 的 TextView 添加圆形边框。我们将详细讲解 XML 代码的配置,包括圆角、描边和填充等属性。 ... [详细]
  • 本文探讨了Java编程的核心要素,特别是其面向对象的特性,并详细介绍了Java虚拟机、类装载器体系结构、Java类文件和Java API等关键技术。这些技术使得Java成为一种功能强大且易于使用的编程语言。 ... [详细]
author-avatar
厮守这一季德冬天_262
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有