Unity递归读取xml文件所有节点信息
1.新建空白xml文件,从本地读取xml文件,确定开始的根节点
XmlDocument xmls = new XmlDocument();//新建空白xml文件
xmls.Load(Application.dataPath + "/xml/WeatherApi.xml");//从本地读取xml文件
XmlElement root = xmls.DocumentElement;//确定根节点
2.递归读取根节点,打印没有子节点的根节点信息,如果没有子节点,打印,否则循环
void read(XmlElement root)
{
XmlNodeList childs = root.ChildNodes;
for (int i = 0; i < childs.Count; i++)
{
XmlElement elm = childs[i] as XmlElement;
XmlNodeList childs1 = elm.ChildNodes;
if (childs1.Count> 1)//如果子节点数大于1
{
read(elm);//递归调用
}
else
{
print(elm.Name + "-" + elm.InnerText);//否则打印当前节点信息
}
}
}
完整代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using UnityEngine;
namespace Assets
{
class Class3:MonoBehaviour
{
private void Start()
{
XmlDocument xmls = new XmlDocument();//新建空白xml文件
xmls.Load(Application.dataPath + "/xml/WeatherApi.xml");//从本地读取xml文件
XmlElement root = xmls.DocumentElement;//确定根节点
read(root);
}
//递归读取根节点,打印没有子节点的根节点信息,如果没有子节点,打印,否则循环
void read(XmlElement root)
{
XmlNodeList childs = root.ChildNodes;
for (int i = 0; i < childs.Count; i++)
{
XmlElement elm = childs[i] as XmlElement;
XmlNodeList childs1 = elm.ChildNodes;
if (childs1.Count> 1)//如果子节点数大于1
{
read(elm);//递归调用
}
else
{
print(elm.Name + "-" + elm.InnerText);//否则打印当前节点信息
}
}
}
}
}