XML属性移动删除

/************************
 ************需求内容**********
 *******把所有clips标签上的type,text属性移动到一个
 *****新建的标签——UI上,并把原来clip上的type,text属性删除
 * ********编辑器小工具***************
 *************************/
using UnityEngine;
using System.Collections;
using UnityEditor;
using System.Xml;


public class XmlChange {

    /// <summary>
    /// xml文件的绝对路径
    /// </summary>
    static string dataPath = Application.streamingAssetsPath + "/StoryTest.xml";
    
    [MenuItem("SkyWing/XML_ChangeDate")]
    private static void XMLchange()
    {
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(dataPath);
        Debug.Log("开始修改");
        XmlElement list = xmlDoc.DocumentElement;
        Debug .Log (list.ChildNodes.Count);

            for (int i = 0, k = list.ChildNodes.Count; i < k; i++)
            {
                XmlNodeList nodeList = list.GetElementsByTagName("Clip");
                foreach (XmlElement item in nodeList)
                {
                    //不存在type属性 或者 text属性 则不替换
                    if (!item.HasAttribute("type") || !item.HasAttribute("text")) continue;
                    
                    //新生成一个UI元素 添加属性type和text 并且移除原来元素的type和text属性
                    XmlElement UIelement = xmlDoc.CreateElement("UI");
                    string type = item.GetAttribute("type");
                    string text = item.GetAttribute("text");
                    Debug.Log("type:" + type + ".......text:" + text);
                    UIelement.SetAttribute("type", type);
                    UIelement.SetAttribute("text", text);
                    item.AppendChild(UIelement);

                    item.RemoveAttribute("type");
                    item.RemoveAttribute("text");
                }
            }
            xmlDoc.Save(dataPath);
            Debug.Log("clip上的type,text已移动到新的标签UIelement上,并把原有的删除了");
    }

      
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果需要源码可以发送邮件到sdiwen1982@sohu.com索取 /*************************************** 功能:读取xml文件 参数:[in] xml文件路径 返回:true读取成功 false读取失败 **************************************/ bool ReadXml(CString sXmlPath /*xml文件路径*/); /*************************************** 功能:写入xml文件 参数:[in] xml文件路径 返回:true写入成功 false写入失败 **************************************/ bool WriteXml(CString sXmlPath /*xml文件路径*/); /*************************************** 功能:释放空间 参数:无 返回:无 **************************************/ void Release(); /*************************************** 功能:删除指定的节点 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteNode(); /*************************************** 功能:删除当前节点的所有子节点,当前节点不删除 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteAllSon(); /*************************************** 功能:根据索引删除子节点 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteSonByIndex(unsigned int nIndex); /*************************************** 功能:删除节点所有属性 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteAllAttr(); /*************************************** 功能:根据属性删除属性 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteAttrByName(CString sName); /*************************************** 功能:根据索引删除属性 参数:无 返回:true删除成功 false删除失败 **************************************/ bool DeleteAttrByIndex(unsigned int nIndex); /*************************************** 功能:根据属性名设置属性值 参数:[in] sName 属性名 [in] sValue 属性值 返回:true设置成功 false设置失败 **************************************/ bool SetAttrValueByName(CString sName, CString sValue); /*************************************** 功能:插入属性 参数:[in] sName 属性名 [in] sValue 属性值 返回:true插入成功 false插入失败 **************************************/ bool InsertAttr(CString sName, CString sValue); /*************************************** 功能:设置节点值 参数:[in] sValue 属性值 返回:true设置节点值成功 false设置节点值失败 **************************************/ bool SetNodeValue(CString sValue); /*************************************** 功能:插入子节点 参数:[in] sName 节点名 返回:非空表示插入节点成功,返回插入的新节点指针 空表示插入失败 **************************************/ CXMLNode * InsertNode(CString sName); /*************************************** 功能:判断是否存在子节点 参数:[in] pNode 子节点文件指针, 返回:false没有子节点 true有子节点 **************************************/ bool HasChild(MSXML2::IXMLDOMNodePtr pNode);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值