Unity3d xml操作类

using System;

using UnityEngine;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Xml;


namespace Xml

{

    public class JString

    {

        string value;

        public JString(string str)

        {

            value = str;

        }


        public new string ToString()

        {

            return value;

        }


        //螳樒鴫髫仙シ剰スャ謐「 -string

        public staticimplicit operator string(JString xs)

        {

            return xs.value;

        }


        public staticimplicit operator JString(string str)

        {

            return new JString(str);

        }


        //螳樒鴫髫仙シ剰スャ謐「 - float

        public staticimplicit operator float(JString xs)

        {

            return xs.value ==""? 0:(float)Convert.ToDouble(xs.value);

        }

        public staticimplicit operator JString(float v)

        {

            return new JString(v.ToString());

        }


        //螳樒鴫髫仙シ剰スャ謐「 - int

        public staticimplicit operator int(JString xs)

        {

            return xs.value ==""?0:(int)Convert.ToDouble(xs.value);

        }

        public staticimplicit operator JString(int v)

        {

            return new JString(v.ToString());

        }


        //螳樒鴫髫仙シ剰スャ謐「 - int64

        public staticimplicit operator JString(Int64 v)

        {

            return new JString(v.ToString());

        }

        public staticimplicit operator Int64(JString xs)

        {

            return xs.value ==""? 0 : (Int64)Convert.ToDouble(xs.value);

        }


        //螳樒鴫髫仙シ剰スャ謐「 - bool

        public staticimplicit operator JString(bool v)

        {

            return new JString(v.ToString());

        }

        public staticimplicit operator bool(JString xs)

        {

            if (xs.value =="" || xs.value.ToLower() == "false" || xs.value == "0")return false;

            return true;

        }

    }

    public class JNode

    {

        JNode parent = null;

        string nodeName;

        protected XmlNode node = null;

        public JAttribute Attributes;

        public JNode()

        {

            Attributes = new JAttribute(this);

        }

        public JNode(JNode _parent, string _nodeName)

        {

            parent = _parent;

            nodeName = _nodeName;

            node = parent.GetChildXmlNode(nodeName);

            Attributes = new JAttribute(this);

        }

        public JNode(JNode _parent, int _index)

        {

            parent = _parent;

            node = parent.GetChildXmlNode(_index);

            Attributes = new JAttribute(this);

        }

        /// <summary>

        /// 霑泌屓隸・JNode蟇ケ蠎皮噪XmlNode

        /// </summary>

        /// <paramname="Create"></param>

        /// <returns></returns>

        public XmlNode GetXmlNode(bool Create =false)

        {

            if (Create && node == null)

            {

                XmlNode xn = parent.GetXmlNode(true);

                node = xn.AppendChild(xn.OwnerDocument.CreateNode(XmlNodeType.Element, nodeName,null));

            }


            return node;

        }

        XmlNode GetChildXmlNode(int _index)

        {

            if (node == null)return null;

            return node.ChildNodes[_index];

        }

        XmlNode GetChildXmlNode(string name)

        {

            if (node == null)return null;

            return node.SelectSingleNode(name);

        }

        /// <summary>

        

        /// </summary>

        public int Count

        {

            get { return node ==null ? 0 : node.ChildNodes.Count; }

        }

        public string InnerXml

        {

            get { return node ==null ? "" : node.InnerXml; }

            set { GetXmlNode(true).InnerXml =value; }

        }


        public JNode this[string NodeName]

        {

            get { returnnew JNode(this, NodeName); }

        }


        public JNode this[int NodeIndex]

        {

            get { returnnew JNode(this, NodeIndex); }

        }

    }


    public class JXml : JNode

    {

        XmlDocument xml;

        public JXml(string xmlstring,bool hasDocumentElement = true)

            : base()

        {

            xml = new XmlDocument();

            xml.LoadXml(xmlstring);

            node = hasDocumentElement ? (XmlNode)xml.DocumentElement : xml;

        }

        public void SaveToFile(string fileName)

        {

            System.IO.File.WriteAllText(fileName, xml.OuterXml);

        }

        public void LoadFromFile(string fileName,bool hasDocumentElement = true)

        {

            xml.Load(fileName);

            node = hasDocumentElement ? (XmlNode)xml.DocumentElement : xml;

        }

public Vector3 parseStringToVector3(string sourceString)

{  

Vector3 outVector3;

string outString;

string[] splitString;

outString= sourceString.Substring(0,sourceString.Length-2);

splitString = outString.Split(","[0]);

outVector3.x = float.Parse(splitString[0]);

outVector3.y = float.Parse(splitString[1]);

outVector3.z = float.Parse(splitString[2]);

return outVector3;

}

    }


    public class JAttribute

    {

        JNode node;

        public JAttribute(JNode xn)

        {

            node = xn;

        }


        public int Count

        {

            get { return node.Attributes.Count; }

        }


        void SetAttribute(string name,string value)

        {

            XmlNode xn = node.GetXmlNode(true);

            XmlAttribute xa = xn.Attributes[name];

            if (xa == null) xa = xn.Attributes.Append(xn.OwnerDocument.CreateAttribute(name));

            xa.Value = value;

        }

        public JString this[string AttributeName]

        {

            get { return (node.GetXmlNode(false) ==null || node.GetXmlNode(false).Attributes[AttributeName] ==null) ? "" : node.GetXmlNode(false).Attributes[AttributeName].Value; }

            set { SetAttribute(AttributeName,value); }

        }


        public XmlAttribute this[int AttributeIndex]

        {

            get { return node.GetXmlNode(false).Attributes[AttributeIndex]; }

        }

    }

}

转自 http://blog.sina.com.cn/u/2765476005

添加了stringtovector3的,方便设定坐标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值