Unity使用Mono.Xml代替System.Xml 测试
测试环境
操作系统:Windows8.1
开发工具:Unity5.5.2
1、新建一个测试项目,观测引用System.Xml与Mono.Xml解析文件正确性,与打包后APK体积大小。
2、Mono.Xml 用例
using UnityEngine;
using Mono.Xml;
using System.Security; public class MonoXmlTest : MonoBehaviour { void Start () { SecurityParser parser = new SecurityParser(); string xmlPath = "test"; parser.LoadXml(Resources.Load(xmlPath).ToString()); SecurityElement element = parser.ToXml(); foreach (SecurityElement node in element.Children)
{
if (node.Tag == "table")
{
string wave = node.Attribute("wave");
string level = node.Attribute("level");
string name = node.Attribute("name");
Debug.Log("wave:" + wave + " level:" + level + " name:" + name);
} }
} }
- 结果正确:

- 安装包大小:

编译日志可以观测到没有引用System.Xml.dll(该文件约1mb)
Mono dependencies included in the build
Dependency assembly - Mono.Security.dll
Dependency assembly - System.Core.dll
Dependency assembly - System.dll
Dependency assembly - mscorlib.dll
Dependency assembly - UnityEngine.UI.dll
Dependency assembly - UnityEngine.Networking.dll
Dependency assembly - UnityEngine.PlaymodeTestsRunner.dll
Dependency assembly - Assembly-CSharp.dll
3、System.xml用例
using UnityEngine;
using System.Xml; public class SystemXmlTest : MonoBehaviour { // Use this for initialization
void Start () { XmlDocument xml = new XmlDocument();
XmlReaderSettings set = new XmlReaderSettings();
xml.LoadXml(Resources.Load("test").ToString()); XmlNodeList nodes = xml.SelectSingleNode("ROOT").ChildNodes; foreach (XmlElement node in nodes)
{
string wave = node.GetAttribute("wave");
string level = node.GetAttribute("level");
string name = node.GetAttribute("name"); Debug.Log("wave:" + wave + " level:" + level + " name:" + name);
} } }
- 结果正确:

- 安装包大小:

- 编译日志:可以观测到引用System.Xml.dll(该文件约1mb)
编译日志:可以观测到引用System.Xml.dll(该文件约1mb) Mono dependencies included in the build
Dependency assembly - Mono.Security.dll
Dependency assembly - System.Core.dll
Dependency assembly - System.Xml.dll
Dependency assembly - System.dll
Dependency assembly - mscorlib.dll
Dependency assembly - UnityEngine.UI.dll
Dependency assembly - UnityEngine.Networking.dll
Dependency assembly - UnityEngine.PlaymodeTestsRunner.dll
Dependency assembly - Assembly-CSharp.dll
4、结论:使用Mono.Xml代替System.Xml在APK安装包编译后,体积减小约400kb,建议使用Mono.Xml
Unity使用Mono.Xml代替System.Xml 测试的更多相关文章
- XML序列化 System.Xml.Serialization
一.定义元数据 XML序列化常用属性:XMLRoot,XMlType.XMLText.XMLEnum等 [Serializable] [XmlRoot] public class Product { ...
- XSLT可扩展样式表语言转换 System.Xml.Xsl、XslCompiledTransform类
XML文件 books.xml: <?xml version="1.0" encoding="utf-8" ?> <bookstore> ...
- Linq to XML - C#生成XML
1.System.Xml.XmlDocument XML file转成字符串 string path3 = @"C:\Users\test.xml"; XmlDocument ...
- Unity中用Mono插件解析xml文件
1.解压压缩包,把文件夹拖到脚本文件夹下 Mono是第三方基金会开发的开源的东西,通过Mono基础上开发的程序可以在各个系统下运行.开发语言是C#. 用插件解析比较高效,平台运行稳定.使用简单. Un ...
- Unity引擎下最快的Xml读取器:UnityRapidXml
近期发现无论是系统的System.Xml还是Mono.Xml,其实都有这样或者那样的问题,所以决定自己搞一个快一点的xml parse.以前在C++里用过rapidxml,这个确实是神一般的存在,速度 ...
- VS2012 Unit Test —— 我对IdleTest库动的大手术以及对Xml相关操作进行测试的方式
[1]我的IdleTest源码地址:http://idletest.codeplex.com/ [2]IdleTest改动说明:2013年10月份在保持原有功能的情况下对其动了较大的手术,首先将基本的 ...
- arm linux下编译库System.Net.Primitives.dll和System.Xml.XmlSerializer.dll
1.环境: /home/jello # uname -aLinux 3.10.0 #2 SMP Mon Mar 6 17:52:09 CST 2017 armv7l GNU/Linux 2.获取mo ...
- Unity 3D游戏-NPC对话系统With XML
用XML做的Unity NPC对话系统 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Create X ...
- TestNg之XMl形式实现多线程测试
为什么要使用多线程测试? 在实际测试中,为了节省测试时间,提高测试效率,在实际测试场景中经常会采用多线程的方式去执行,比如爬虫爬数据,多浏览器并行测试. 关于多线程并行测试 TestNG中实现多线程并 ...
随机推荐
- 异步编程的两种模型,闭包回调,和Lua的coroutine,到底哪一种消耗更大
今天和人讨论了一下CPS变形为闭包回调(典型为C#和JS),以及Lua这种具有真正堆栈,可以yield和resume的coroutine,两种以同步的形式写异步处理逻辑的解决方案的优缺点.之后生出疑问 ...
- CSS3选择器~一看吓一跳,这么多不会
复习CSS时发现很多选择器不会,因为平时很少用到.现在干脆一不做二不修,全部温习一遍.本文参考http://css.doyoe.com/. 一.元素选择器 图片来自:http://css.doyoe. ...
- (iOS)关于UITableView设置contentsize(原创)
由于UITableView是继承自UIScrollView的,所以他是可以设置contentsize的. 但是,我在试验的过程中,初始化UITableView实例后,直接设置它的contentsize ...
- Windows入门基础:1.关于CreateWindow()函数使用中遇到的问题
我在实现显示窗口的程序中,遇到一个问题:首先程序没有任何语法错误,编译能够通过,但是就是不能弹出窗口. 后来在MSDN中查询CreateWindow()函数,发现了下面这句话: "If lp ...
- Entity Framework Code First在Oracle下的伪实现
为什么要说是伪实现,因为还做不到类似MsSql中那样完全的功能.Oralce中的数据库还是要我们自己手动去创建的.这里,我们舍掉了Model First中的EDMX文件,自己在代码里面写模型与映射关系 ...
- 基于MVC和Bootstrap的权限框架解决方案 二.添加增删改查按钮
上一期我们已经搭建了框架并且加入了列表的显示, 本期我们来加入增删改查按钮 整体效果如下 HTML部分,在HTML中找到中意的按钮按查看元素,复制HTML代码放入工程中 <a class=&qu ...
- shell脚本基本知识点
Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁.用户通过这个界面访问Linux操作系统内核的服务.Shell既是一种命令语言,又是一种程序设计语言. 1.Shell 环境 Shel ...
- DateTime.Now的一些用法
System.DateTime.Now.ToString("D"); //Tuesday, December 13, 2016 System.DateTime.Now.ToSt ...
- Javascript数组与基本函数
数组定义方法: 1. var arr=new Array(); var arr=Array(); 2. var arr1=Array('a','b','c'); 3. var arr2=['a','b ...
- React Starter Kit 中文文档
最近没事又翻译了个玩意. Github上的一个Star 非常高的 React 样板程序. 由Node.js,Express,GraphQL和React构建,可选加入Redux等,并可以包含Webpac ...