zoukankan      html  css  js  c++  java
  • c#操作xml文件

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Xml;
    namespace XMLTest
    {
        public class CommXml
        {
            public XmlDocument xmlDoc = new XmlDocument();
            public void getXmlDoc(string strXml)
            {
                xmlDoc.LoadXml(strXml);
            }

            public CommXml(string strXml)
            {
                xmlDoc.LoadXml(strXml);

            }

            /// <summary>
            /// 从父节点开始,中间用逗号隔开
            /// </summary>
            /// <param name="strNode">节点名称</param>
            /// <param name="strValue">节点值</param>
            public void setNodeValue(string strNode, string strValue)
            {
                XmlNode xn = getNode(strNode);
                xn.InnerText = strValue;

            }


            /// <summary>
            /// 根据逗号相隔节点名称取得当前节点
            /// </summary>
            /// <param name="strNode"></param>
            /// <returns></returns>
            private XmlNode getNode(string strNode)
            {
                XmlNode xn = null;

                string[] strNodeNameArr = strNode.Trim(',').Split(',');

                foreach (string strNodeName in strNodeNameArr)
                {
                    if (xn == null)
                    {
                        if (strNodeName.IndexOf("*") > 0)
                        {
                            xn = getNodeListNode(strNodeName, xmlDoc);
                        }
                        else
                        {
                            xn = xmlDoc.SelectSingleNode(strNodeName);
                        }
                    }
                    else
                    {
                        if (strNodeName.IndexOf("*") > 0)
                        {
                            xn = getNodeListNode(strNodeName, xn);
                        }
                        else
                        {
                            xn = xn.SelectSingleNode(strNodeName);
                        }
                        if (xn == null) throw new Exception("节点" + strNodeName + "不存在.");
                    }

                }

                return xn;

            }

            /// <summary>
            /// 节点列表中单个节点取得
            /// </summary>
            /// <param name="strNode">节点列表节点名称:例;nodename*0 指节点名称是nodename的节点数组下标是0的节点取得</param>
            /// <param name="fatherXn">当前节点的父亲节点</param>
            /// <returns></returns>
            private XmlNode getNodeListNode(string strNode, XmlNode fatherXn)
            {
                XmlNode xn = null;
                string[] strNodeListNameAndArrNum = strNode.Split('*');
                XmlNodeList xnList = fatherXn.SelectNodes(strNodeListNameAndArrNum[0]);
                xn = xnList.Item(Convert.ToInt32(strNodeListNameAndArrNum[1]));
                return xn;
            }



            /// <summary>
            ///  节点属性值设定
            /// </summary>
            /// <param name="strNode">从父节点开始,中间用逗号隔开</param>
            /// <param name="strAttributeName">节点名称</param>
            /// <param name="strValue">节点值</param>
            public void setNodeAttributes(string strNode, string strAttributeName, string strValue)
            {
                XmlNode xn = getNode(strNode);
                try
                {
                    xn.Attributes[strAttributeName].Value = strValue;
                }
                catch
                {
                    throw new Exception("节点" + strNode + "不存在属性[" + strAttributeName + "].");

                }
            }

            /// <summary>
            /// 节点属性值取得
            /// </summary>
            /// <param name="strNode">从父节点开始,中间用逗号隔开</param>
            /// <param name="strAttributeName">节点名称</param>
            /// <returns></returns>
            public string getNodeAributeValue(string strNode, string strAttributeName)
            {
                try
                {
                    XmlNode xn = getNode(strNode);
                    return xn.Attributes[strAttributeName].Value;
                }
                catch
                {
                    throw new Exception("节点" + strNode + "不存在属性[" + strAttributeName + "].");

                }

            }

            /// <summary>
            /// 数组也表数据节点属性值设定
            /// </summary>
            /// <param name="strNode">从父节点开始,中间用逗号隔开</param>
            /// <param name="strAttributeName">节点名称</param>
            /// <param name="strValue">节点值</param>
            /// <param name="arrNum">数组节点下标,从0开始</param>
            public void setNodeListAttributes(string strNode, string strAttributeName, string strValue, int arrNum)
            {

            }


            public void test()
            {

                string strXml = @" <battleArmies>
     <battleArmy side=""1"">
     <battleTroops>
     <battleTroop position=""0"">
     <battleTeams>
     <battleTeam id=""1000"" x=""15"" y=""7"" hp=""80.0"" amount=""8"">
     <soldierConfig name=""老虎"" type=""LAO_HU"" category=""2"" attack=""18.0"" defence=""15.0"" hp=""10.0"" moveSpeed=""10.0"" attackScope=""1.0"" attackSpeed=""15.0"" destroy=""null"" critical=""null"" criticalRate=""null"">
    <attackAddon key_0=""2.83"" key_1=""1.0"" key_2=""1.0"" key_3=""1.0"" key_4=""1.0"" />
    </soldierConfig>
     <soldierAddonConfig name=""老虎"" type=""LAO_HU"" category=""2"" attack=""18.18"" defence=""15.15"" hp=""10.0"" moveSpeed=""10.0"" attackScope=""1.0"" attackSpeed=""15.0"" destroy=""null"" critical=""null"" criticalRate=""null"">
    <attackAddon key_0=""2.83"" key_1=""1.0"" key_2=""1.0"" key_3=""1.0"" key_4=""1.0"" />
    </soldierAddonConfig>
    </battleTeam>
     </battleTeams>
     </battleTroop>
     </battleTroops>
     </battleArmy>
     </battleArmies>
    ";
                CommXml xml = new CommXml(strXml);
                xml.setNodeAttributes("battleArmies,battleArmy,battleTroops,battleTroop,battleTeams,battleTeam*0,soldierConfig*0,attackAddon", "key_0", "2999");
                string strNodeValue = xml.getNodeAributeValue("battleArmies,battleArmy,battleTroops,battleTroop,battleTeams,battleTeam*0,soldierConfig*0,attackAddon", "key_0");

            }
        }





    }

  • 相关阅读:
    2015-SH项目总结
    2015年总结
    [css]我要用css画幅画(七)
    [css]我要用css画幅画(六)
    [css]我要用css画幅画(五)
    [css]我要用css画幅画(四)
    [css]我要用css画幅画(三)
    程序遇到问题需要关闭
    ASP.NET Core 验证:(二)介绍ASP.NET Core的 Indentity
    ASP.NET Core 验证:(一)概述
  • 原文地址:https://www.cnblogs.com/jishu/p/1940118.html
Copyright © 2011-2022 走看看