C#基础知识及题目练习 Day15 XML

目录

XML

1、通过代码创建XML文档

2、读取xml文档中的内容:

3、添加属性:

4、修改元素:

eg:获取学员信息


XML

可扩展的标记语言 存储数据

1、所有的xml标签都以尖括号<>括起来,尖括号是成对出现的

2、操作xml文件的类叫:XDocument
命名空间:System.Xml.Linq;

3、加载已有的xml文件:xd = XDocument.Load(path);

4、得到xml文件的根元素
                XElement xroot = xd.Element("root");

1、通过代码创建XML文档

//创建Xml文件

                //1、创建XDocument对象

                XDocument xdNew = new XDocument();

                //2、创建XDocument的声明

                XDeclaration xdeclare = new XDeclaration("1.0", "utf-8", null);

                //3、将声明赋值给document

                xdNew.Declaration = xdeclare;

                //4、创建根节点

                XElement xroot = new XElement("Root");

                //5、创建Student节点

                XElement xStu = new XElement("Student");

                //6、为Student节点添加name节点

                xStu.Add(new XElement("name", "张三"));

                //7、添加性别节点

                XElement xSex = new XElement("sex", "");

                xStu.Add(xSex);

                //8、添加年龄节点

                xStu.Add(new XElement("age", 16));

                //9、把xStu添加到Root节点下

                xroot.Add(xStu);

 

                XElement xStu2 = new XElement("Student");

                xStu2.Add(new XElement("name", "孙的"));

                xStu2.Add(new XElement("sex", ""));

                xStu2.Add(new XElement("age", "18"));

                xroot.Add(xStu2);

                //10、将xroot节点添加到document

                xdNew.Add(xroot);

                //11、保存xdocument文件

                xdNew.Save(path);

 

2、读取xml文档中的内容:

读取XML文件:

XDocument xd = XDocument.Load(path);

//相对路径

            //string strPath = Application.StartupPath + @"\test.xml";

            string strPath = AppDomain.CurrentDomain.BaseDirectory + @"\test.xml";

            //读取xml文件

            //1、先判断文件是否存在

            if (File.Exists(strPath))

            {

                //将文件读取出来,把数据赋值个Dgv

                //实例化一个Document对象,对xml文件操作 //加载xml文件

              XDocument  xd=XDocument.Load(strPath);

                //读取文档的根节点

               XElement xroot = xd.Element("root");

                //根据根节点获取根节点下的元素

               List<XElement> lst = xroot.Elements().ToList(); //

             foreach (var item in lst)

             {

                 //string id = item.Attribute("id").Value;

                 //MessageBox.Show(id);

                 //姓名

                 string name = item.Element("name").Value;

                 string sex = item.Element("sex").Value;    //性别

                 int age = Convert.ToInt32(item.Element("age").Value);  //年龄

                 Student stu = new Student();

                 stu.Name = name;

                 stu.Sex = sex;

                 stu.Age = age;

                 lsStudents.Add(stu);

             }

                //Dgv绑定数据源

             BindingSource bind = new BindingSource();

             bind.DataSource = lsStudents;

             dataGridView1.DataSource = bind;

 

3、添加属性:

//1、加载Xdocument

                XDocument xd = XDocument.Load(path);

                //2、获取根节点

                XElement xroot = xd.Element("Root");

               //3、获取出学生集合

                List<XElement> lst = xroot.Elements().ToList();

                for (int i = 0; i < lst.Count; i++)

                {

                    //创建一个属性,名叫id

                    XAttribute xid = new XAttribute("Id", i + 1);

                    //4、为每一个学生添加上id属性

                    lst[i].Add(xid);

                    xroot.Add(lst[i]);

                }

                //5、保存文档

                xd.Save(path);

 

4、修改元素:

//1、加载Xdocument

                XDocument xd = XDocument.Load(path);

                //2、获取根节点

                XElement xroot = xd.Element("Root");

                //3、获取出学生集合

                List<XElement> lst = xroot.Elements().ToList();

                for (int i = 0; i < lst.Count; i++)

                {

                    lst[i].Element("name").Value = lst[i].Element("name").Value + "中国";

                    lst[i].Attribute("Id").Value = (Convert.ToInt32(lst[i].Attribute("Id").Value) + 1).ToString();

                }

                //5、保存文档

                xd.Save(path);

 

5、读取带属性的XML

//1、加载Xdocument

                XDocument xd = XDocument.Load(path); 

                //2、获取根节点

                XElement xroot = xd.Element("Root");

                //3、获取出学生集合

                List<XElement> lst = xroot.Elements().ToList();

                for (int i = 0; i < lst.Count; i++)

                {

                    string id=lst[i].Attribute("Id").Value;

                    MessageBox.Show(id);

                }

eg:获取学员信息

Student.xml

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <student id="1">
    <name>张三三</name>
    <age>3</age>
    <sex>男</sex>
  </student>
  <student id="2">
    <name>李四四</name>
    <age>4</age>
    <sex>女</sex>
  </student>
  <student id="3">
    <name>王五五</name>
    <age>5</age>
    <sex>男</sex>
  </student>
</root>

    

namespace XMLDemo
{
    public partial class Form1 : Form
    {
        XDocument xd;
        string path = @"D:\wokspace_Ma\Day20zy_machenxi\XMLDemo\Student.xml";
        //string path = "Student.xml";
        //不能直接写Student.xml,那样地址为D:\wokspace_Ma\Day20zy_machenxi\XMLDemo\bin\Debug\...
        public Form1()
        {
            InitializeComponent();

        }

        private void btnRead_Click(object sender, EventArgs e)
        {
            if (File.Exists(path))
            {
                xd = XDocument.Load(path);
                XElement xe = xd.Element("root");
                List<XElement> lst = xe.Elements().ToList();
                foreach (XElement item in lst)
                {
                    string strName = item.Element("name").Value.ToString();
                    string strAge = item.Element("age").Value.ToString();
                    string strSex = item.Element("sex").Value.ToString();
                    winform中的占位符:Format
                    string str = string.Format("姓名:{0},年龄:{1},性别:{2}。", strName, strAge, strSex);
                    listBox1.Items.Add(str);
                }
            }
            else
            {
                MessageBox.Show("地址有误");
                //string fullPath= Path.GetFullPath(path);
                //MessageBox.Show(fullPath);
            }
        }
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值