using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UIHandler : MonoBehaviour {
/// <summary>
/// 通过名字寻找子物体
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
protected GameObject GetByName(string name)
{
Transform[] trans = GetComponentsInChildren<Transform>(true);
for (int i = 0; i < trans.Length; i++)
{
if (trans[i].name == name)
{
return trans[i].gameObject;
}
}
return null;
}
}
using System;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using UnityEngine;
using UnityEngine.UI;
public class OpretionXml : UIHandler
{
/// <summary>
/// xml文件生成的路径
/// </summary>
public string filepath;
/// <summary>
/// 创建XML文件的按钮
/// </summary>
public Button CreateXmlBtn;
public Button LoadXmlBtn;
//public Text titleText;
//public Text priceText;
//public Text authorText;
//public Text yearText;
/// <summary>
/// 需要显示内容文本
/// </summary>
public Text[] InnerText = null;
/// <summary>
/// 内容文本的名称
/// </summary>
public string[] InnerNames;
// Use this for initialization
void Start () {
//Application.dataPath是本地工程目录下的asset目录
filepath = Application.dataPath + "/shlock_book.xml";
Debug.Log(Application.dataPath);
CreateXmlBtn = GetByName("CreateXmlBtn").GetComponent<Button>();
LoadXmlBtn = GetByName("LoadXmlBtn").GetComponent<Button>();
CreateXmlBtn.onClick.AddListener(OnCreatXmlClick);
LoadXmlBtn.onClick.AddListener(OnLoadXXmlClick);
//titleText = GetByName("titleText").GetComponent<Text>();
//priceText = GetByName("priceText").GetComponent<Text>();
//authorText = GetByName("authorText").GetComponent<Text>();
//yearText = GetByName("yearText").GetComponent<Text>();
InnerNames = new string[] { "titleText", "priceText", "authorText", "yearText" };
InnerText = new Text[4];
for (int i = 0; i < InnerText.Length; i++)
{
InnerText[i] = GetByName(InnerNames[i]).GetComponent<Text>();
}
//CreatXmlBtn = transform.Find("CreatXmlBtn").GetComponent<Button>();
}
// Update is called once per frame
void Update () {
}
private void OnLoadXXmlClick()
{
//xml文件类
XmlDocument xmlDoc = new XmlDocument();
//读取该路径的文件
xmlDoc.Load(filepath);
//获取节点
XmlNode node = xmlDoc.SelectSingleNode("bookstore").SelectSingleNode("book") ;
Debug.Log(node);
for (int i = 0; i < node.ChildNodes.Count; i++)
{
InnerText[i].text = node.ChildNodes[i].InnerText;
}
}
void OnCreatXmlClick()
{
//Xml文件类 该类没有继承MonoBehaviour
XmlDocument xmlDoc = new XmlDocument();
//创建根元素
XmlElement root = xmlDoc.CreateElement("bookstore");
//创建book节点
XmlElement book = xmlDoc.CreateElement("book");
//创建title节点
XmlElement title = xmlDoc.CreateElement("title");
//创建author节点
XmlElement author = xmlDoc.CreateElement("author");
//创建year节点
XmlElement year = xmlDoc.CreateElement("year");
//创建price节点
XmlElement price = xmlDoc.CreateElement("price");
//设置book节点的属性 categroy种类
book.SetAttribute("categroy", "悬疑");
//设置title节点的文本
title.InnerText = "盗墓笔记";
title.SetAttribute("language", "chinese");
author.InnerText = "南派三叔";
year.InnerText = "2007";
price.InnerText = "30";
//将price节点设置为book子节点
book.AppendChild(title);
book.AppendChild(price);
book.AppendChild(author);
book.AppendChild(year);
root.AppendChild(book);
xmlDoc.AppendChild(root);
//保存Xml文件到指定路径
xmlDoc.Save(filepath);
}
/ <summary>
/ 通过名字寻找子物体
/ </summary>
/ <param name="name"></param>
/ <returns></returns>
//GameObject GetByName(string name)
//{
// Transform[] trans = GetComponentsInChildren<Transform>(true);
// for (int i = 0; i < trans.Length; i++)
// {
// if (trans[i].name == name)
// {
// return trans[i].gameObject;
// }
// }
// return null;
//}
}
在Unity引擎中如何生成本地XML数据?
第一步:引用C#的命名空间 System.Xml
第二步:生成XML文档(XmlDocument 类)
第三步:生成根元素(XmlElement 类)添加给文档对象
第四步:循环生成子元素添加给父元素
第五步:将生成的XML文档保存