当前位置: 首页 > news >正文

C#__简单了解XML文档

 

        /*
        XML(可扩展标记语言):用于传输和存储数据
        XML文档:树结构;包含根元素
        XML元素:从开始标签到结束标签的部分
        
        XML语法规则:
        1、所有XML元素都必须有结束标签
        2、XML标签对字母大小写敏感
        3、XML必须正确嵌套
        4、必须有根元素
        5、XML的属性值必须加引号
        
        XML中的注释:
        <!-- This is a comment -->

        XML的命名规则:
        名称可以含字母、数字以及其他字符
        名称不能以数字或标点符号开始
        名称不能以字符“Xml、xml、XML”开始
        名称不能包含空格

        可以使用任何名称(没有保留的字词)
         */

 

 // Skill.xml

<?xml version="1.0" encoding="utf-8" ?> 
<skills><skill><id> 1 </id><name lang ="cn">大慈大悲手</name><damage>166</damage></skill><skill><id> 2 </id><name lang ="cn">佛落掌</name><damage>366</damage></skill><skill><id> 3 </id><name lang ="cn">如来</name><damage>666</damage></skill>
</skills>

// Skill.cs 

    class Skill{public int ID { get; set; }public string Name { get; set; }public string Lang { get; set; }public int Damage { get; set; }}

 

// Program.cs

       static void Main(string[] args){List<Skill> list = new List<Skill>(); //将Skill类的数据放入实例化的列表中XmlDocument xmlDoc = new XmlDocument(); //实例化一个xml文档类型//路径加载方法xmlDoc.Load(@"F:\C#编程\XML uesr\Skills.xml");//字符串加载方法//xmlDoc.LoadXml(File.ReadAllText("Skills.xml"));//获取1号子节点,注意:0是声明XmlNode root0 = xmlDoc.ChildNodes[0];XmlNode root = xmlDoc.ChildNodes[1];Console.WriteLine(root0.Name);  // xmlConsole.WriteLine(root.Name);  // skills//获取root的所有子节点XmlNodeList skillList = root.ChildNodes;foreach(XmlNode skill in skillList){// xml获取子节点和属性值方案一
/*               Skill skillObj = new Skill();XmlElement idEle = skill["id"];skillObj.ID = Int32.Parse(idEle.InnerText);XmlElement nameEle = skill["name"];skillObj.Name = nameEle.InnerText;XmlAttributeCollection attriCol = nameEle.Attributes;XmlAttribute attri = attriCol["lang"];skillObj.Lang = attri.Value;XmlElement damageEle = skill["damage"];skillObj.Damage = Int32.Parse(damageEle.InnerText);list.Add(skillObj);*/// xml获取子节点和属性值方案二Skill skillObj = new Skill();foreach (XmlNode node in skill.ChildNodes){// Console.WriteLine(node.Name + ":" + node.InnerText);/** id: 1* name: 大慈大悲手*damage:166*id: 2*name: 佛落掌*damage:366*id: 3*name: 如来*damage:666*/if (node.Name == "id"){// 将数字的字符串表示形式转换为它的等效 32 位有符号整数。skillObj.ID = Int32.Parse(node.InnerText);}else if(node.Name == "name"){// 获取或设置节点及其所有子节点的串连值。skillObj.Name = node.InnerText;// 获取 System.Xml.XmlAttributeCollection 包含此节点的属性。skillObj.Lang = node.Attributes[0].Value;}else{skillObj.Damage = Int32.Parse(node.InnerText);}}// 将skillObj的值依次存入列表list.Add(skillObj);}foreach (Skill s in list){Console.WriteLine(s.ID + "," + s.Name + "," + s.Lang + "," + s.Damage);/*1,大慈大悲手,cn,1662,佛落掌,cn,3663,如来,cn,666*/}}

// 结果

 

http://www.lryc.cn/news/211112.html

相关文章:

  • 云游数智农业世界,体验北斗时空智能
  • C# 递归算法使用简介_常用整理
  • [Python]unittest-单元测试
  • Jetpack:021-Jetpack中的滑动列表
  • 基于单片机的空气质量检测系统
  • 论文阅读——InstructGPT
  • 【表面缺陷检测】铝型材表面缺陷检测数据集介绍(含xml标签文件)
  • 我的学习:从本科到研究生的认识与实践经验总结
  • 云游长江大桥,3DCAT实时云渲染助力打造沉浸化数字文旅平台
  • 【音视频|PCM】PCM格式详解
  • 行为型模式-行为型模式
  • openpnp - Warning - Unknown firmware
  • Android 中如何使用 App Links
  • 7 款好用的 PDF 密码删除工具
  • 你一般什么时候会用到GPT?
  • YUV编码格式解析
  • mysql-面试50题-5
  • 微服务初始和Nacos安装
  • YouTube博主数据信息资源
  • 算法通过村第十七关-贪心|黄金笔记|跳跃游戏
  • 【精选】VMware部署ESXI6.5 vCenter Server详解
  • 如何借助数据集更好的评估NLP模型的性能?
  • 2023年腾讯云服务器地域节点选择指南(亲自整理)
  • 华媒舍:日韩媒体发稿推广中8个关键因素帮助你实现突破
  • Docker数据卷
  • LightGBM 的完整解释 - 最快的梯度提升模型
  • Think-Queue3一直提示[Exception]redis扩展未安装
  • Spring cloud教程Gateway服务网关
  • 【C++代码】爬楼梯,不同路径,整数拆分,不同搜索树,动态规划--代码随想录
  • 设计模式(单例模式、工厂模式及适配器模式、装饰器模式)