热门标签 | 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程序设计有所帮助。


推荐阅读
  • Java EE CDI:解决依赖关系冲突的实例
    在本教程中,我们将探讨如何在Java EE的CDI(上下文和依赖注入)框架中有效解决依赖关系的冲突问题。通过学习如何使用限定符,您将能够为应用程序的不同客户端提供多种接口实现,并确保每个客户端都能正确调用其所需的实现。 ... [详细]
  • Android中解析XML文件的实践指南
    本文详细介绍了在Android应用开发中解析XML文件的方法,包括从本地文件和网络资源获取XML文件的不同途径,以及使用DOM、SAX和PULL三种解析方式的具体实现。 ... [详细]
  • ServletContext接口在Java Web开发中扮演着重要角色,它提供了一种方式来获取关于整个Web应用程序的信息。通过ServletContext,开发者可以访问初始化参数、共享数据以及应用资源。 ... [详细]
  • 本文提供了详细的步骤,介绍如何将基于Maven的Java EE项目从Eclipse IDE部署到JBoss应用服务器上。适合初学者和中级开发者参考。 ... [详细]
  • Eclipse 中 Maven 的基础配置指南
    本文详细介绍了如何在 Eclipse 环境中配置 Maven,包括环境变量的设置、Maven 插件的安装与配置等关键步骤,旨在帮助开发者顺利搭建开发环境。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • Android中实现复合旋转动画效果
    本文将探讨如何在Android应用中实现动态且吸引人的旋转动画。通过结合多种动画类型,如透明度变化、旋转、缩放和位移,可以创造出更为复杂的视觉效果。我们将从XML布局和Java代码两个方面进行详细介绍。 ... [详细]
  • Android商城应用开发指南(第二部分):创建启动欢迎页
    大多数商城应用程序在启动时会显示一个欢迎页面,以提升用户体验。本文将指导您如何实现一个基本的欢迎页,该页面会在用户打开应用后短暂展示,随后自动跳转至主界面。 ... [详细]
  • 本文详细介绍了如何使用 PHP 编程语言输出 99 乘法表,包括使用不同的循环结构如 do-while、for 循环等方法,并提供了具体的代码示例。 ... [详细]
  • 详解 | 日志系统ViseLog的基本使用与功能
    本文详细介绍了日志系统ViseLog的使用方法及其核心功能,旨在帮助开发者更好地理解和利用这一工具,提高开发效率。 ... [详细]
  • 本文探讨了使用Filter作为控制器的优势,以及Servlet与Filter之间的主要差异。同时,详细解析了Servlet的工作流程及其生命周期,以及ServletConfig与ServletContext的区别与应用场景。 ... [详细]
  • 本文介绍了两种在Android设备上获取MAC地址的有效方法,包括通过Wi-Fi连接和使用移动数据流量的情况。第一种方法依赖于Wi-Fi连接来获取MAC地址,而第二种方法则无需Wi-Fi,直接通过网络接口获取。 ... [详细]
  • Flowable 6.6.0 表单引擎在Web应用中的集成与使用
    本文档提供了Flowable 6.6.0版本中表单引擎在Web应用程序中的配置和使用指南,包括表单引擎的初始化、配置以及在Web环境下的具体实现方法。 ... [详细]
  • 近期,谷歌公司的一名安全工程师Eduardo Vela在jQuery Mobile框架中发现了一项可能引发跨站脚本攻击(XSS)的安全漏洞。此漏洞使得使用jQuery Mobile的所有网站面临潜在的安全威胁。 ... [详细]
  • Gradle复合构建详解
    自Gradle 3.3起,复合构建功能得以实现,这是一种能够整合其他独立构建的高级构建模式。本文将详细介绍复合构建与多项目构建的区别,以及如何在实际项目中应用复合构建。 ... [详细]
author-avatar
亲爱的jackvan叔叔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有