C# XML文档相关操作

C# 创建XML文档

  • XML文档知识点
  • 创建XML文档
  • 向XML中追加
  • 读取XML文档
  • 读取带属性的XML文档
  • 删除节点

XML文档知识点

XML 是可扩展的标记语言
XML:用来存储数据
注意点:XML是严格区分大小写的,XML标签也是成对出现的
XML文档有且只能有一个根节点
当需要往节点里里面添加标签的时候使用InnerXml,添加文本的时候使用InnerText
元素包含节点

创建XML文档

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

namespace demo20_0801
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //通过代码来创建XML文档
            //1.引用命名空间
            //2.创建XML文档对象
            XmlDocument doc = new XmlDocument();
            //3.创建第一行描述信息,并且添加到doc文档中
            XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
            doc.AppendChild(dec);
            //4.创建根节点
            XmlElement books = doc.CreateElement("Books");
            //将根节点添加到文档中
            doc.AppendChild(books);
            //5.给根节点Books创建子节点
            XmlElement book1 = doc.CreateElement("Book");
            //将book添加到根节点
            books.AppendChild(book1);
            //给book1添加子节点
            XmlElement name1 = doc.CreateElement("Name");
            name1.InnerText = "被讨厌的勇气";
            book1.AppendChild(name1);
            //给book1添加子节点
            XmlElement price1 = doc.CreateElement("Price");
            price1.InnerText = "10";
            book1.AppendChild(price1);
            //给book1添加子节点
            XmlElement disc1 = doc.CreateElement("Disc");
            disc1.InnerText = "富有哲理且有深度";
            book1.AppendChild(disc1);

            //给节点添加属性
            XmlElement Charactor1 = doc.CreateElement("Charactor");
            Charactor1.SetAttribute("人物1","大师");
            Charactor1.SetAttribute("人物2", "学者");
            book1.AppendChild(Charactor1);

            //下面两个节点测试了InnerXml和
            XmlElement test1 = doc.CreateElement("test1");
            test1.InnerText = "

我是一个标签

"
; book1.AppendChild(test1); XmlElement test2 = doc.CreateElement("test2"); test2.InnerXml = "

我是一个标签

"
; book1.AppendChild(test2); doc.Save("Books.xml");//保存xml文档 Console.WriteLine("保存成功"); Console.ReadKey(); } } }

创建好的XML文档如下所示:
C# XML文档相关操作_第1张图片

向XML中追加

追加XML文档,首先要判断XML文档存不存在,存在则加载XML文档并获取根节点,若文件不存在,则创建第一行和根节点。

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

namespace demo21_0801
{
    internal class Program
    {
        //追加XML文档
        static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();
            XmlElement books;
            if (File.Exists("Books.xml"))
            {
                //如果文件存在,加载XML
                doc.Load("Books.xml");
                //获得文件的根节点
                books = doc.DocumentElement;
            }
            else
            {
                //如果文件不存在,创建第一行
                XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "utf-8", null);
                doc.AppendChild(xmlDeclaration);
                //创建根节点
                books = doc.CreateElement("Books");
                doc.AppendChild(books);
            }
            //5.给根节点Books创建子节点
            XmlElement book1 = doc.CreateElement("Book");
            //将book添加到根节点
            books.AppendChild(book1);
            //给book1添加子节点
            XmlElement name1 = doc.CreateElement("Name");
            name1.InnerText = "C#图解教程";
            book1.AppendChild(name1);

            XmlElement price1 = doc.CreateElement("Price");
            price1.InnerText = "10";
            book1.AppendChild(price1);

            XmlElement disc1 = doc.CreateElement("Disc");
            disc1.InnerText = "富有哲理且有深度";
            book1.AppendChild(disc1);

            doc.Save("Books.xml");
            Console.WriteLine("保存成功");
            Console.ReadKey();

        }
    }
}

读取XML文档

C# XML文档相关操作_第2张图片
读取上述XML文档

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

namespace demo22_0801
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //读取XML文档
            XmlDocument doc = new XmlDocument();
            doc.Load("Books.xml");
            //获取文档的根节点
            XmlElement books = doc.DocumentElement;
            //获得子节点,返回节点的集合
            XmlNodeList xmlNodeList = books.ChildNodes;

            foreach (XmlNode xmlNode in xmlNodeList)
            {
                Console.WriteLine(xmlNode.InnerText);
            }
            Console.ReadKey();
        }
    }
}

打印出来的内容如下所示:
C# XML文档相关操作_第3张图片

读取带属性的XML文档

如果读取带有属性的XML文档,文档内容如下:

<?xml version="1.0" encoding="utf-8"?>
<Books>
  <Book>
        <Charactor name1="大师" name2="学者" />
    </Book>
</Books>

读取带有属性的XML文档的代码如下:

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

namespace demo23_0801
{
    internal class Program
    {
        //读取节点的属性值
        static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("Books.xml");
            //选择节点:
            XmlNodeList xmlNodeList = doc.SelectNodes("/Books/Book/Charactor");
            foreach (XmlNode node in xmlNodeList)
            {
                Console.WriteLine(node.Attributes["name1"].Value);
                Console.WriteLine(node.Attributes["name2"].Value);
            }
            Console.ReadKey();
        }
    }
}

控制台显示内容如下:
在这里插入图片描述

删除节点

要删除的XML文档内容如下:

<?xml version="1.0" encoding="utf-8"?>
<Books>
  <Book>
    <Name>C#图解教程</Name>
    <Price>10</Price>
    <Disc>富有哲理且有深度</Disc>
  </Book>
</Books>

删除节点代码:

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

namespace demo24_0801
{
    internal class Program
    {
        static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("Books.xml");
            XmlNode xmlNode  = doc.SelectSingleNode("/Books/Book");
            //删除Book下面的所有子节点
            xmlNode.RemoveAll();
            doc.Save("Books.xml");
            Console.WriteLine("删除成功");
            Console.ReadKey();
        }
    }
}

删除后的XML文档内容如下:

<?xml version="1.0" encoding="utf-8"?>
<Books>
  <Book>
  </Book>
</Books>

你可能感兴趣的:(c#,xml,java)