xml文档的创建与解析

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml;

namespace XMLData
{
    public class XMLDataTest
    {

        #region  XML文档的创建【实际项目中很少用】

        /*
         *<?xml version ="1.0" encoding="utf-8" ?>
            <root>
            <Students>
              <Student id="1">
                <Name>张三</Name>
                <Age>15</Age>
              </Student>
              <Student id="2">
                <Name>李四</Name>
                <Age>25</Age>
              </Student>
            </Students>  
            </root> 
         * 
         */
        /// <summary>
        /// 创建XML文档
        /// </summary>
        private void CreateXMLFile()
        {
            //创建文档
            XmlDocument doc = new XmlDocument();

            //创建声明
            XmlDeclaration decl = doc.CreateXmlDeclaration("1.0", "utf-8", "");
            doc.AppendChild(decl);

            //创建root节点
            XmlElement root = doc.CreateElement("root");
            doc.AppendChild(root);

            //创建Students节点
            XmlElement students = doc.CreateElement("Students");
            root.AppendChild(students);

            string[] Names = new string[] {"张三","李四"};
            string[] Ages = new string[] {"12","15"};

            for (int i = 0; i < Names.Length; i++)
            {
                //创建student节点
                XmlElement student = doc.CreateElement("Student");

                //第1种设置属性的方式
                student.SetAttribute("id",(i+1).ToString());
                第2种设置属性的方式
                //XmlAttribute att = doc.CreateAttribute("id");
                //att.Value = (i + 1).ToString();
                //student.Attributes.Append(att);

                //创建Name节点
                XmlElement name = doc.CreateElement("Name");
                name.InnerText = Names[i];
                student.AppendChild(name);

                //创建Age节点
                XmlElement age = doc.CreateElement("Age");
                age.InnerText = Ages[i];
                student.AppendChild(age);


                students.AppendChild(student);

            }


            //保存文档
            doc.Save(Application.dataPath+"/XML/test.xml");

        }
        #endregion



        /// <summary>
        /// 解析XML文档方式1
        /// 层层递进访问目标节点数据
        /// </summary>
        private void LoadXMLFile1()
        {
            //创建文档
            XmlDocument doc = new XmlDocument();
            //加载文档
            doc.Load(Application.dataPath + "/XML/test.xml");

            //获取root节点
            XmlElement root = doc.LastChild as XmlElement;
            //获取Students节点
            XmlElement students = doc.FirstChild as XmlElement;

            //循环遍历Student节点
            foreach (XmlElement student in students.ChildNodes)
            {
                //获取属性ID
                string id = student.GetAttribute("id");
                //获取名字
                string name = student.ChildNodes[0].InnerText;
                //获取年龄
                string age = student.ChildNodes[1].InnerText;
            }

        }

        /// <summary>
        /// 解析XML文档方式二
        /// 根据Xpath节点路径来访问数据
        /// </summary>
        private void LoadXMLFile2()
        {
            //创建文档
            XmlDocument doc = new XmlDocument();
            //加载文档
            doc.Load(Application.dataPath + "/XML/test.xml");

            XmlNodeList  nodeList = doc.SelectNodes("/root/Students/Student/Name");
            foreach (XmlElement ele in nodeList)
            {
                string name = ele.InnerText;
            }
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Data菌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值