Unity3D读取XML文件里面的属性
发表于2018-09-03
之前给大家介绍过Unity读取XML、JSON文件的方法,而本篇要再深入一下, 给大家介绍的是读取XML文件里面的属性,不清楚的可以看看。
Mono.xml下载链接:http://download.csdn.net/detail/cwqcwk1/7105071
<?xml version="1.0"?> <info> <book id="b1" lang="en"> <name>c++</name> <price>570</price> </book> <book id="b2" lang="en"> <name>c#</name> <price>110</price> </book> </info>
Unity3D读取XML文件里面的属性
using Mono.Xml; using System.Collections; using System.Collections.Generic; using System.IO; using System.Security; using System.Xml; using UnityEngine; public class ReadXML : MonoBehaviour { // Use this for initialization void Start () { //TextAsset ta = Resources.Load("test", typeof(TextAsset)) as TextAsset; //ReadXMlTest(new MemoryStream(ta.bytes)); StartCoroutine(StartTxt()); } // Update is called once per frame void Update () { } IEnumerator StartTxt() { WWW www = new WWW("file://" + Application.streamingAssetsPath + "/test.xml"); yield return www; //ReadXMlTest(new MemoryStream(www.bytes)); ReadXMLMono(www.text); www.Dispose(); } void ReadXMlTest(Stream stream) { XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(stream); XmlNode info = xmldoc.SelectSingleNode("info"); foreach (XmlNode node in info.ChildNodes) { string id = node.Attributes["id"].Value; string lang = node.Attributes["lang"].Value; string name = node.SelectSingleNode("name").InnerText; string price = node.SelectSingleNode("price").InnerText; Debug.Log("node.Name:" + node.Name + " id:"+ id + " lang:" + lang + " name:" + name + " price:" + price); } } void ReadXMLMono(string text) { SecurityParser sp = new SecurityParser(); sp.LoadXml(text); SecurityElement se = sp.ToXml(); foreach (SecurityElement sel in se.Children) { string id = (string)sel.Attributes["id"]; string lang = (string)sel.Attributes["lang"]; string name = "", price = ""; foreach (SecurityElement se2 in sel.Children) { if (se2.Tag == "name") { name = se2.Text; } else if (se2.Tag == "price") { price = se2.Text; } } Debug.Log(" id:" + id + " lang:" + lang + " name:" + name + " price:" + price); } } }