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

android怎么从xml文件里面提取数据,第1张

一、环境:

主机:WIN8

开发环境:Eclipse

二、说明:

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

2读取xml文件

三、xml文件格式:

<xml version="10" encoding="UTF-8" standalone="true">

-<config>

<title>远程视频会见系统</title>

<local_port>12600</local_port>

<schedule_service_ip>1058159</schedule_service_ip>

<schedule_service_port>12601</schedule_service_port>

</config>

四、源代码:

package comexamplehelloanychat;

import javaioFile;

import javaioFileInputStream;

import javaioFileOutputStream;

import javaioIOException;

import javaioStringWriter;

import javanetInet6Address;

import javanetInetAddress;

import javanetNetworkInterface;

import javanetSocketException;

import javautilEnumeration;

import javaxxmlparsersDocumentBuilder;

import javaxxmlparsersDocumentBuilderFactory;

import androidosEnvironment;

import androidutilLog;

import orgw3cdomDocument;

import orgw3cdomElement;

import orgw3cdomNodeList;

import orgxmlpullv1XmlPullParserFactory;

import orgxmlpullv1XmlSerializer;

/

配置信息类

新建日期: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_infolocal_ip = getLocalIpAddress();

Systemoutprintf("本机ip:%s\n", config_infolocal_ip);

//获取SD卡目录

sd_path = EnvironmentgetExternalStorageDirectory();

//判断文件夹是否存在

file_cfg_dir = new File(sd_pathgetPath() + "//Remote_Meeting");

if (!file_cfg_direxists() && !file_cfg_dirisDirectory()) {

Systemoutprintln("配置文件夹Remote_Meeting不存在!");

ok = file_cfg_dirmkdirs();

if (ok) {

Systemoutprintln("创建文件夹成功!");

} else {

Systemoutprintln("创建文件夹失败!");

}

}

//判断配置文件是否存在

file_cfg = new File(file_cfg_dirgetPath(),"cfgxml");

if (!file_cfgexists())

{

Systemoutprintln("配置文件cfgxml不存在!");

try {

file_cfgcreateNewFile();

Systemoutprintln("创建文件cfgxml成功!");

//生成初始化的配置数据

try {

out = new FileOutputStream(file_cfg);

//保存默认配置

config_infotitle = "远程视频会见系统";

config_infolocal_port = 12600;

config_infoschedule_server_ip = "1058159";

config_infoschedule_server_port = 12601;

str = produce_xml_string(config_info);

outwrite(strgetBytes());

outclose();

} catch (IOException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

} catch (IOException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

config_infotitle = "远程";

config_infolocal_port = 126;

config_infoschedule_server_ip = "105";

config_infoschedule_server_port = 12;

Systemoutprintf("----222222222%s,%d,%s,%d\n",config_infotitle,config_infolocal_port,

config_infoschedule_server_ip,config_infoschedule_server_port);

//解析xml文件

try {

in = new FileInputStream(file_cfg);

DocumentBuilderFactory factory = DocumentBuilderFactorynewInstance();

DocumentBuilder builder = factorynewDocumentBuilder();

Document document = builderparse(in);

// 获取根节点

Element root = documentgetDocumentElement();

NodeList node = rootgetChildNodes();

//获得第1子节点:标题

config_infotitle = nodeitem(0)getFirstChild()getNodeValue();

//获得第2子节点:本机端口

config_infolocal_port = IntegerparseInt(nodeitem(1)getFirstChild()getNodeValue());

//获得第3子节点:调度服务器ip

config_infoschedule_server_ip = nodeitem(2)getFirstChild()getNodeValue();

//获得第4子节点:调度服务器端口

config_infoschedule_server_port = IntegerparseInt(nodeitem(3)getFirstChild()getNodeValue());

Systemoutprintf("----222222222%s,%d,%s,%d\n",config_infotitle,config_infolocal_port,

config_infoschedule_server_ip,config_infoschedule_server_port);

} catch (Exception e) {

eprintStackTrace();

}

}

@Override

public Config_Info get_config_info() {

return config_info;

}

/

得到本机ip地址

@return 本机ip地址

/

private String getLocalIpAddress() {

try {

for (Enumeration<NetworkInterface> en = NetworkInterface

getNetworkInterfaces(); enhasMoreElements();) {

NetworkInterface intf = ennextElement();

for (Enumeration<InetAddress> enumIpAddr = intf

getInetAddresses(); enumIpAddrhasMoreElements();) {

InetAddress inetAddress = enumIpAddrnextElement();

//if (!inetAddressisLoopbackAddress()) {

if (!inetAddressisLoopbackAddress() && !(inetAddress instanceof Inet6Address)) {

return inetAddressgetHostAddress()toString();

}

}

}

} catch (SocketException ex) {

Loge("WifiPreference IpAddress", extoString());

}

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 = XmlPullParserFactorynewInstance();

XmlSerializer xmlSerializer = factorynewSerializer();

// 设置输出流对象

xmlSerializersetOutput(stringWriter);

//开始标签

xmlSerializerstartDocument("utf-8", true);

xmlSerializerstartTag(null, "config");

//标题

xmlSerializerstartTag(null, "title");

xmlSerializertext(infotitle);

xmlSerializerendTag(null, "title");

//本机端口

xmlSerializerstartTag(null, "local_port");

xmlSerializertext(IntegertoString(infolocal_port));

xmlSerializerendTag(null, "local_port");

//调度服务器ip

xmlSerializerstartTag(null, "schedule_service_ip");

xmlSerializertext(infoschedule_server_ip);

xmlSerializerendTag(null, "schedule_service_ip");

//调度服务器端口

xmlSerializerstartTag(null, "schedule_service_port");

xmlSerializertext(IntegertoString(infoschedule_server_port));

xmlSerializerendTag(null, "schedule_service_port");

xmlSerializerendTag(null, "config");

xmlSerializerendDocument();

} catch (Exception e) {

eprintStackTrace();

}

return stringWritertoString();

}

}

assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。

assets的读取方式:

1 先在Activity里面调用getAssets() 来获取AssetManager引用。

2 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream。

3 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStreamclose() 。

4调用AssetManagerclose() 关闭AssetManager。

需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的 *** 作

一、软件安装

首先通过appstore下载安装Xcode开发工具,当前编写文档时最新版本为451

二、通过Xcode工具编写运行测试脚本

说明:如果是在IOS模拟器上运行测试用例,需要有被测试应用的源代码才有权限把应用安装到模拟器中,当前示例中使用了自己编写的一个简单Iphone应用,大家也可以直接在网上搜索一个开源的应用即可。

1、当你有了一个应用的源代码之后,在Xcode工具中,首先选中被测应用,然后点击菜单栏中的“Product-Profile”,则会d出Instruments工具,在d出的工具中选择IOS Simulator-》Automation,然后点击Profile

2、在d出的Automation工具中选择需要测试的项目,同时在Add-》Create 添加测试脚本,点击Create后,在中间区域会出现编写测试脚本的区域,在中间添加以下脚本

//获取当前window对象

var target = UIATargetlocalTarget();

var app = targetfrontMostApp();

var window = appmainWindow();

//打印除当前界面的控件数信息

targetlogElementTree();

具体的API参考官方文档

>

//初始化一个xml实例

XmlDocument xml=new XmlDocument();

//导入指定xml文件

xmlLoad(path);

xmlLoad(>

以上就是关于android怎么从xml文件里面提取数据全部的内容,包括:android怎么从xml文件里面提取数据、如何获取android 下的StreamingAssets文件夹中的xml文件、如何获得uiautomation的xml文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9636657.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存