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