
一、环境:
主机: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文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)