当前位置 博文首页 > unity工具人的博客:C#对Xml文件的基本操作 一(读取Xml文件中的

    unity工具人的博客:C#对Xml文件的基本操作 一(读取Xml文件中的

    作者:[db:作者] 时间:2021-07-20 12:35

    **

    情景一:xml中存着一个参数,你仅仅是想用这个参数而已

    c#代码:

    using System.IO;
    using System.Xml;
    using UnityEngine;
    
        public void LoadXml(string XmlPath)
        {
    		XmlDocument xd = new XmlDocument();
    		xd.Load("XmlPath");//加载xml文档
    		XmlNode rootNode = xd.SelectSingleNode("RootNode");//得到xml文档的根节点
    		XmlNode node = rootNode.SelectSingleNode("EndTime");//获取根节点的子节点"EndTime"
            string time = node.InnerText;
            print(time);
    	}
    

    Xml文本内容

    <?xml version="1.0" encoding="UTF-8"?>
    <RootNode>
        <EndTime>30</EndTime>
    </RootNode>
    

    运行
    在这里插入图片描述
    成功

    情景二:xml中保存着结构相同的几组数据,读取它们并添加到一个List中,然后随用随取

    代码:

    using System;
    using System.Threading;
    using System.Xml;
    using System.Collections.Generic;
                public static void Main(string[] args){
    			XmlDocument xd=new XmlDocument();
    			xd.Load("test.xml");//加载xml文档
    			XmlNode rootNode= xd.FirstChild;//得到xml文档的根节点
    			XmlNodeList childNodes= rootNode.ChildNodes;//得到根节点下面的所有子节点
    			List<Character> playerList=new List<Character>();//创建character类型的列表
    			foreach(XmlNode p in childNodes){//遍历各个角色
    				Character player=new Character();//创建一个角色,用来存储查询到的信息
    				XmlNodeList contentList= p.ChildNodes;//得到该角色结点下的所有子节点
    				foreach(XmlNode content in contentList){//遍历子节点
    					if(content.Name=="name"){
    						player.Name=content.InnerText.ToString();
    					}
    					if(content.Name=="profession"){
    						player.Profession=content.InnerText.ToString();
    					}
    					if(content.Name=="skill"){
    						player.Skill=content.InnerText.ToString();
    					}
    					if(content.Name=="damage"){
    						player.Damage=Int16.Parse( content.InnerText.ToString());
    					}
    				}
    				playerList.Add(player);//将创建的角色添加到角色列表
    			}
    			foreach(Character p in playerList)//遍历角色信息
    				Console.WriteLine(p.ToString());
    			Console.ReadKey();
    		}
    class Character{
    		public Character(){}
    		public string Name{get;set;}
    		public string Profession{get;set;}
    		public string Skill{get;set;}
    		public int Damage{get;set;}
    		public override string ToString()
    		{
    			return string.Format("[Character Name={0}, Profession={1}, Skill={2}, Damage={3}]", Name, Profession, Skill, Damage);
    		}
     
    	}
    

    XML文本内容:

    <?xml version="1.0" encoding="UTF-8"?>
      <character>
      <player><name>武则天</name><profession>法师</profession><skill>生杀予夺</skill><damage>1100</damage> </player>
      <player><name>吕布</name><profession>战士</profession><skill>神魔降世</skill><damage>900</damage></player>
      <player><name>孙悟空</name><profession>刺客</profession><skill>如意金箍</skill><damage>770</damage></player>
      <player><name>妲己</name><profession>法师</profession><skill>女王崇拜</skill><damage>485</damage></player>
      </character>
    

    运行结果:
    在这里插入图片描述

    成功!

    三.读取XML文件各节点方式

    XmlDocument xmlDocument = new XmlDocument();
    xmlDocument.Load("XMLConfig.xml");
    
    XmlNode xmlRoot = xmlDocument.SelectSingleNode("Root");
    XmlNode xmlChild1 = xmlRoot.SelectSingleNode("Child1");
    XmlNode xmlChild2 = xmlRoot.SelectSingleNode("Child2");
    Console.WriteLine("xmlChild2.InnerText is:" + xmlChild2.InnerText);
    XmlNode xmlChild3 = xmlRoot.SelectSingleNode("Child3");
    XmlNode xmlChild3Child = xmlChild3.SelectSingleNode("Child3的XmlElementInner");
    
    foreach (XmlAttribute value in xmlChild3Child.Attributes)
    {
        Console.WriteLine(value.Name + "        " + value.Value);
    }
    
    Console.WriteLine("xmlChild3Child.InnerText is:" + xmlChild3Child.Attributes.GetNamedItem("我是键").Value);
    
    <?xml version="1.0" encoding="UTF-8"?>
    <Root>
      <Child1 />
      <Child2>我是Child2的值呀</Child2>
      <Child3>
        <Child3的XmlElementInner 我是键="我是值" 我是键1="我是值1" />
      </Child3>
    </Root>
    

    四:补充
    xml节点类型

    <book Type="必修课" ISBN="7-111-19149-4"></book>
    

    读取方式

    string type = book.GetAttribute("Type").ToString();
    

    感谢原文作者:https://blog.csdn.net/hyy_sui_yuan/article/details/81263995###

    如果想学习 C#对Xml文件的增、删、改、查
    请看这篇博文:https://blog.csdn.net/weixin_45023328/article/details/108149781

    cs