XML

XML编码格式:

编码utf-8 无bom 以及utf-8 bom是不一样的;BOM——Byte Order Mark,就是字节序标记

utf8-bom格式的读取方式 需要先读取第一个字节
StringReader r = new StringReader(text);
r.Read();
document.LoadXml(r.ReadToEnd());
r.Close();

utf-8直接读取;

 

解析XML:

1.引入命名空间 System.Xml;

2.网络XML可以通过WWW进行加载

本地资源可以用

XmlDocument doc = new XmlDocument();

doc.Load("E:/myXML.xml");  //本地路径

docLoadXml(www.text);//文本

XMLDocument:xml文档
XmlElement root = xml.DocumentElement;
每个元素都是:XmlElement
//继承关系
XMLElement->XmlNode
根节点root是XMLElement;
//返回里面所有子节点XmlNode;
XmlNodeList arr=root.ChildNodes;
XmlNodeList集合:节点集合,通过下表访问元素;
每个元素都是XMLNode的类型;
如果想访问节点的属性就必须把节点进行向下转行:
XmlElement n=arr[0] as XMLElement;
string value=n.GetAttribute("属性名字")

XML:

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml;
using System.IO;
public class XMLDemo : MonoBehaviour
{

    // Use this for initialization
    void Start()
    {
        StartCoroutine(ResourceXml());
 
    }

    IEnumerator ResourceXml()
    {
        WWW www;
        yield return www = new WWW("F:\\EditPlus 4\\Untitled2_utf8.xml");
        if (www.isDone)
        {
            if (string.IsNullOrEmpty(www.error))
            {
                print(www.text);
                ReadXML(www.text);
            }
            else
            {
                print(www.error);
            }
        }
        //释放 防止占用资源
        www.Dispose();
        www = null;
    }
    
    //读取XML
    public void ReadXML(string text)
    {
        //创建一个xml文档解析器
        XmlDocument document = new XmlDocument();//相当于,我现在创建了一个word空白文档

        // 把指定的xml格式的字符串内容加载到 文件名为document的word空白文档中  
        //接下来,就可以开始到文档中来取内容了,
        document.LoadXml(text);
        //1:先取根节点,
        XmlElement root = document.DocumentElement;
        print(root);
        //获取所有子节点
        XmlNodeList list = root.ChildNodes;


        for (var i = 0; i < list.Count; i++)
        {
            //子节点
            XmlNode node = list[i];

            string name = (node as XmlElement).GetAttribute("name");
            int x = int.Parse(node["x"].InnerText);
            int y = int.Parse(node["y"].InnerText);
            int z = int.Parse(node["z"].InnerText);
            mon.Enqueue(new Monsters(name, x, y, z));

        }
        Monsters m1 = mon.Dequeue();
        print(m1.name + "x:" + m1.x + ",y:" + m1.y + ",z:" + m1.z);
        Monsters m2 = mon.Dequeue();
        print(m2.name + "x:" + m2.x + ",y:" + m2.y + ",z:" + m2.z);

    }
    //怪物信息队列
    Queue<Monsters> mon = new Queue<Monsters>();
    class Monsters
    {
        public string name;
        public int x;
        public int y;
        public int z;
        public Monsters(string name, int x, int y, int z)
        {
            this.name = name;
            this.x = x;
            this.y = y;
            this.z = z;
        }
    }
}

 

 

CreatXML以及修改XML:

 

//修改XML
    public void ChangeXML()
    {
        //加载"E:/myXML.xml"的xml文件
        XmlDocument doc = new XmlDocument();
        doc.Load("E:/myXML.xml");
        XmlElement root = doc.DocumentElement;
        //修改属性
        root["task"].SetAttribute("sex", "男");
        //添加节点
        XmlElement child = doc.CreateElement("task2");
        root.AppendChild(child);

        doc.Save("E:/myXML.xml");

    }
    //新建XML
    public void CreatXML()
    {
        XmlDocument doc = new XmlDocument();
        XmlElement root = doc.CreateElement("Task");
        XmlElement child = doc.CreateElement("task");
        child.SetAttribute("sex", "1");
        doc.AppendChild(root);
        root.AppendChild(child);
        //保存到该目录下
        doc.Save("E:/myXML.xml");
    }

新建并修改后的XML文件内容:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值