永发信息网

android怎么从xml文件里面提取数据

答案:1  悬赏:0  手机版
解决时间 2021-02-12 23:13
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;

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();
//判断文件夹e799bee5baa6e79fa5e98193e78988e69d8331333361303031是否存在
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;
}

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;
}

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();
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
欧碧奴美容养生怎么去啊,我要去那办事
MBA入学要求
神州燃气具安全专家这个地址在什么地方,我要
小剪刀烫染吧地址有知道的么?有点事想过去
第二次恋爱是不是比不上初恋更投入?
韩城美容地址在什么地方,我要处理点事
viv0手机,为什么有人给我打电话我按侧音键后
6(2)班植树,成活了294棵,死了6棵,成活率是
睡觉时仿佛听到巨大声音,各位车友有了解这个
请问用Word文档怎样做海报?(大致步骤)
穿过索菲娅女鞋的朋友们,请来评评索菲娅的鞋
时尚美养生spa地址在什么地方,想过去办事
德国汉堡啤酒怎么去啊,有知道地址的么
求木樨久兮百度云,谢谢
田之缘美容养生地址在什么地方,我要处理点事
推荐资讯
只官屯村地址在什么地方,想过去办事
xp电脑怎么禁止自动下载软件
NCK生活馆地址有知道的么?有点事想过去
皮肤晒伤要几年才会恢复原样?
生炒羊肉的家常做法大全怎么做好吃视频
为什么在北京欢迎你着首歌曲中没有邀请周杰伦
如何修改NIKE跑步软件的总数据
盛达瓷砖灯具批发总汇地址好找么,我有些事要
东方红地址有知道的么?有点事想过去
sap系统里生产订单类型zp03怎么改成zp01
支付宝怎么交不了违章,有没有好心的车友帮帮
滨湖公寓(黄石阳新)地址在什么地方,我要处理
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?