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);
}
}
}
