C#基础13(xml文件的CRUD)

XML文件(CRUD)
可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
1.可扩展标记语言是一种很像超文本标记语言的标记语言。
2.它的设计宗旨是传输数据,而不是显示数据。
3.它的标签没有被预定义。您需要自行定义标签。
4.它被设计为具有自我描述性。
5.它是W3C的推荐标准。

XML格式:

<?xml version="1.0" encoding="utf-8" ?> 张三 18
湖南长沙

1.<?xml version="1.0" encoding="utf-8" ?>
?XML标记说明它是一个XML文档,version为版本号,encoding属性表明是编码格式为”utf-8”,standalone取”yes”时,表明该文件未引用其它外部文件。

2.
每个文档必须有有一个根元素,没有根元素将会在解析的时候出现错误

3.
id属于当前Student节点的属性而值是1

4.XML注释
< !–注释内容–>

XML结构列表:
XmlDocument XML文档
XmlNode XML中单个的节点,如
XmlAttribute XML元素中的属性
XmlText 表示元素或属性的文本内容
XmlElement 最小元素,如张三
XmlComment 表示XML注释的内容
XmlDeclaration XML文档第一行的声明

常用对象属性及方法:

1.XmlDocument对象:主要是针对节点的CUID操作
DocumentElement 属性 获取文档的根
ChildNodes 属性 获取节点的所有子节点
Name 属性 获取节点的限定名称
Value 属性 获取或设置节点的值
Load() 方法 加载整个XML的结构
CreateAttribute 方法 创建具有指定Name的属性
Save() 方法 将XML文档保存到指定的位置
CreateXmlDeclaration 方法 创建一个具有指定值的XmlDeclaration节点
AppendChild 方法 将指定的节点添加到该节点的子节点列表的末尾。

2.XmlNode对象:为抽象类,做为以上两类的基类,提供一些操作节点的方法
InnerText 属性 当前节点的值
Name 属性 当前节点的名字
ChildNodes 属性 当前节点的所有子节点
CreateNode 方法 创建一个新的节点
RemoveAll 方法 移除当前节点的所有子节点和/或属性

3.XmlElement对象:主要是针对节点的一些属性进行操作
SelectSingleNode 方法 选择匹配XPath表达式的第一个XmlNode
SelectNode 方法 选择匹配XPath表达式的XMLNode集合

xml文件:

<?xml version="1.0" encoding="utf-8" ?>
<!--根节点-->
<Persons>
  <!--子节点-->
  <Person>
    <Name>张三</Name>
    <Age>18</Age>
    <Sex>男</Sex>
  </Person>

</Persons>

测试类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace base13
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 获取子节点
            XmlDocument xmld = new XmlDocument();
            //加载.xml文件
            xmld.Load("XML1.xml");
            //获取根节点
            XmlElement root = xmld.DocumentElement;
            //Console.WriteLine(root.ChildNodes.Count);
            //Console.WriteLine(root.Name);
            //遍历当前节点的所有子节点
            foreach (XmlNode xd in root.ChildNodes)
            {
                if (xd.NodeType != XmlNodeType.Comment)//判读是否为注释
                {
                    //遍历当前节点的子节点
                    foreach (XmlNode cxd in xd.ChildNodes)
                    {
                        Console.WriteLine(cxd.Name);
                    }
                }

            }
            #endregion

            #region 增加节点
            //XmlDocument xmld = new XmlDocument();
            加载.xml文件
            //xmld.Load("XML1.xml");
            获取根节点
            //XmlElement root = xmld.DocumentElement;

            创建Person节点
            //XmlElement personxe = xmld.CreateElement("Person");
            创建Name节点
            //XmlElement namexe = xmld.CreateElement("Name");
            给Name节点赋值
            //namexe.InnerText = "李四";
            把Name节点放入Person节点
            //personxe.AppendChild(namexe);

            创建Age节点
            //XmlElement agexe = xmld.CreateElement("Age");
            给Age节点赋值
            //agexe.InnerText = "19";
            把Age节点放入Person节点
            //personxe.AppendChild(agexe);

            创建Sex节点
            //XmlElement sexxe = xmld.CreateElement("Sex");
            给Sex节点赋值
            //sexxe.InnerText = "女";
            把Sex节点放入Person节点
            //personxe.AppendChild(sexxe);

            保存到Persons根节点中
            //root.AppendChild(personxe);
            文件保存
            //xmld.Save("XML1.xml");

            遍历当前节点的所有子节点
            //foreach (XmlNode xd in root.ChildNodes)
            //{
            //    if (xd.NodeType != XmlNodeType.Comment)//判读是否为注释
            //    {
            //        //遍历当前节点的子节点
            //        foreach (XmlNode cxd in xd.ChildNodes)
            //        {
            //            Console.WriteLine(cxd.Name);
            //        }
            //    }
            //}
            #endregion

            #region 修改
            //XmlDocument xmld = new XmlDocument();
            加载.xml文件
            //xmld.Load("XML1.xml");
            获取根节点
            //XmlElement root = xmld.DocumentElement;
            //bool flag = false;
            //foreach (XmlNode xd in root.ChildNodes)
            //{
            //    //不等于回车跟空格
            //    if (xd.NodeType != XmlNodeType.Comment && xd.NodeType != XmlNodeType.Whitespace)
            //    {
            //        XmlNodeList xmlist = xd.ChildNodes;
            //        if (xmlist.Count > 0)
            //        {
            //            foreach (XmlNode cxd in xmlist)
            //            {
            //                if (cxd.Name.Equals("Name"))
            //                {
            //                    if (cxd.InnerText.Equals("张三"))
            //                    {
            //                        flag = true;
            //                    }
            //                }
            //                if (flag)
            //                {
            //                    if (cxd.Name.Equals("Age"))
            //                    {
            //                        cxd.InnerText = "20";
            //                        break;
            //                    }
            //                }
            //            }
            //        }
            //    }
            //}
            //xmld.Save("XML1.xml");
            //foreach (XmlNode xd in root.ChildNodes)
            //{
            //    if (xd.NodeType != XmlNodeType.Comment)//判读是否为注释
            //    {
            //        //遍历当前节点的子节点
            //        foreach (XmlNode cxd in xd.ChildNodes)
            //        {
            //            Console.WriteLine(cxd.Name);
            //        }
            //    }
            //}

            #endregion

            #region 删除
            //XmlDocument xmld = new XmlDocument();
            加载.xml文件
            //xmld.Load("XML1.xml");
            获取根节点
            //XmlElement root = xmld.DocumentElement;
            //foreach (XmlNode xd in root.ChildNodes)
            //{
            //    //不等于回车跟空格  ChildNodes属性  	当前节点的所有子节点
            //    if (xd.NodeType != XmlNodeType.Comment && xd.NodeType != XmlNodeType.Whitespace)
            //    {
            //        foreach (XmlNode cxd in xd.ChildNodes)
            //        {
            //            if (cxd.InnerText.Equals("李四"))
            //            {
            //                cxd.ParentNode.RemoveAll();
            //                root.RemoveChild(cxd);
            //            }
            //        }
            //    }
            //}
            //xmld.Save("XML1.xml");
            #endregion

            #region 节点
            //添加属性
            //XmlDocument xmld = new XmlDocument();
            //xmld.Load("XML1.xml");
            //XmlElement root= xmld.DocumentElement;
            //添加属性
            //root.SetAttribute("id","1");
            //xmld.Save("XML1.xml");

            改
            if (root.GetAttribute("id")!=null)
            {
                root.SetAttribute("id","20");
            }
            删除
            //root.RemoveAllAttributes();//删除所有
            //root.RemoveAttribute("c");
            查询
            //Console.WriteLine(root.GetAttribute("id"));
            //xmld.Save("XML1.xml");//保存
            #endregion

          //参考资料在QQ群:683782676
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

星丿曲丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值