XML的基础知识及XMl文件的创建/读取/更新demo详解

这篇具有很好参考价值的文章主要介绍了XML的基础知识及XMl文件的创建/读取/更新demo详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.什么是xml?

Xml(Extensible Markup Language),可扩展标记语言,一种用于存储数据或传输数据的标记语言,由万维网(W3C开发)。它允许开发人员创建自己的标记,且简单易读,易扩展,支持标准的字符编码,如UFT-8,UTF-16.

2. Xml文档的基本结构

2.1文档声明,包括文档版本(version)、编码格式(encoding).

<?xml version = “1.0”,encoding = “UTF-8”?>

2.2根元素(root element)

Xml文档必须包含一个根元素,其是xml文档所有元素的父元素,如:

<root>

  <!--其他元素-->

</root>

2.3元素(element)

是xml文档的基本单位,包含文本和属性,元素用标签来标识,由<p>开始,</p>结束,如:

<p>这是一个段落</p>

2.4属性(property)

属性是元素的附加信息,属性在开始标签中定义,并以键值对的形式出现.如:

<p link = “www.baidu.com”这是一个链接/p>

2.5注释(Comment)

注释用于在xml文档中添加解释和说明,格式以<!--开始,以-->, 如下:

<!--这是我的注释-->

3.C#对xml文档的抽象

C#对xml文件进行了结构的抽象,支持xml文档的创建、读、写等操作.

3.1 xml文档被抽象成XmlDocument对象,Xml文档对象可以用XmlReader和XmlWriter类对xml文件对象进行读写

3.2 xml文档的元素

被抽象为XmlElement对象,这些对象包含了元素的名称,属性,子元素

3.3 xml文档的属性

XmlAttribute包含了元素的属性名称和值

3.4Xml文档的文本内容

XmlText对象访问文本内容

3.5xml节点处理

XmlNodelist,XmlNodeReader,XmlNodeWriter,用于xml文档的节点列表,读取,写入xml节点.

以上的类都在System.Xml命名空间下,需要引入.

4.创建xml文件的demo:

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

namespace _1.创建xml
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();
            
            //定义xml声明信息
            XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
            
            //xml声明信息添加到文档对象下
            doc.AppendChild(dec);

            //给xml文档声明行添加注释
            doc.AppendChild(doc.CreateComment("line above is the declaration for the xml document"));

            //创建根元素的注释
            XmlNode com = doc.CreateComment("line below is the root element");
            doc.AppendChild(com);
            
            //创建根节点
            XmlElement root = doc.CreateElement("Root");

            //将创建的Root元素添加到xml文档的根节点中
            doc.AppendChild(root);

            //循环添加多个结构相同的节点
            int subnodeCnt = 6;
            //定义随机数对象,用于产生年龄
            Random rdm = new Random();
            for (int i = 0; i < subnodeCnt; i++)
            {
                //创建当前元素的注释
                XmlComment comment =  doc.CreateComment($"这是第{i + 1}个子节点");
                //将注释添加到root下面
                root.AppendChild(comment);
                
                //创建当前元素
                XmlElement element = doc.CreateElement($"学生{i + 1}");
                
                //给当前元素添加属性,如果当前元素没有ID属性,则添加ID属性;如果当前元素有ID属性,则更新ID属性的值
                element.SetAttribute("ID", $"{i + 100}");

                //给当前元素添加子元素,描述学生姓名信息
                XmlElement name = doc.CreateElement("name");
                name.InnerText = $"学生{i+1}";
                element.AppendChild(name);

                //给当前元素添加子节点,描述学生的年龄信息
                XmlElement age = doc.CreateElement("Age");
                
                age.InnerText = $"{rdm.Next(12, 19)}";
                
                element.AppendChild(age);
                
                //创建当前元素到根目录下
                root.AppendChild(element);
            }
            doc.Save(@"D:\dwang\myxml.xml");
        }
    }
}

.5.读取xml文档demo

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

namespace _2.读取x_m_l
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 1;
            string path = $@"D:\dwang\myxml{i}.xml";
            XmlDocument doc = new XmlDocument();
            doc.Load(path);

            //获取根节点
            XmlElement root = doc.DocumentElement;

            //获取子节点(XmlNode是xmlElement,xmlComment的父类)
            foreach (XmlNode student in root.ChildNodes)
            {
                //忽略xml文件中的注释节点(XmlComment)
                if (student as XmlElement == null)
                    continue;
                Console.Write($"{student.Name}--{((XmlElement)student).GetAttribute("name")}");
                foreach (XmlElement subnode in student.ChildNodes)
                {
                    Console.Write($"--{subnode.Name}--{subnode.InnerText}");
                }
                Console.Write("\r\n");
            }
            Console.ReadKey();
        }
    }
}

6.修改xml文档的demo,包括更新节点,添加节点,删除节点等.文章来源地址https://www.toymoban.com/news/detail-844898.html

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace _3.修改xml
{
    class Program
    {
        static void Main(string[] args)
        {
            //添加节点,修改节点,删除节点
            XmlDocument doc = new XmlDocument();

            //加载xml文档
            string path = $@"D:\dwang\myxml1.xml";
            doc.Load(path);

            //获取根节点
            XmlElement root = doc.DocumentElement;

            //获取根节点名称
            string name_RootNode = root.Name;

            //添加节点
            XmlElement newStudent = doc.CreateElement("newStuent");
            //设置newStuent元素的属性
            newStudent.SetAttribute("ID", "888");
            
            //添加newStuent元素的子节点name,age
            XmlElement name = doc.CreateElement("name");
            name.InnerText = "newstuentName";
            newStudent.AppendChild(name);
            XmlElement age = doc.CreateElement("age");
            age.InnerText = "68";
            newStudent.AppendChild(age);

            //将新学生元素添加到根节点最后一个子元素后面
            root.InsertAfter(newStudent, root.ChildNodes[root.ChildNodes.Count-1]);

            //删除指定的节点两种常用方式(XPath)
            //删除指定的节点两种常用方式(XPath)
            //方式1
            XmlNode node1 = doc.SelectSingleNode(@"/Root/学生1");//注意节点的大小写,否则会找不到节点
            XmlNode node1_parent = node1?.ParentNode;
            node1_parent?.RemoveChild(node1);//获取指定的节点后,要用该节点的父节点对象删除该节点
            //方式2
            XmlNode node = root.SelectSingleNode("//学生2");
            if(node != null)
                root?.RemoveChild(node);
            
            //更新xml节点信息
            //获取指定节点元素
            XmlElement student3 = doc.SelectSingleNode(@"/Root/学生3") as XmlElement;

            //更新ID属性值
            student3?.SetAttribute("ID", "000001");

            //设置当前节点的指定子节点的innerText
            if (student3 != null)
            {
                student3["Age"].InnerText = "28";
                student3["name"].InnerText = "Student--3";
            }
            //保存xml文档
            doc.Save(path);
        }
    }
}

到了这里,关于XML的基础知识及XMl文件的创建/读取/更新demo详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • qt xml文件写入读取

    ****************************************************************************** QT       += core gui xml ****************************************************************************** #include \\\"mainwindow.h\\\" #include QDomDocument #include QTextStream #include QFile #include QDebug MainWindow::MainWindow(QWidget *parent)     : QMainWindow(parent) {    

    2024年02月09日
    浏览(24)
  • Java读取XML文本文件

    圆周率没有尽头,风景一直在路上 编写测试的xml文本文件 编码读取(可根据自己需求改写读取节点)

    2024年02月16日
    浏览(27)
  • C# XML文件(相机参数保存和读取)

    XML是可扩展标记语言(Extensible Markup Language,XML)是一种数据语言,它将数据以一种简单的文本格式存储,可以被人类和几乎任何计算机理解。Microsoft在.Net Framework和其他微软产品中已经完全采用它。 XML的基本格式: C#操作XML方法详解 创建一个相机参数XML文件保存和读取的类

    2024年02月12日
    浏览(37)
  • Qt使用单例模式读取xml文件

    单例模式是指在整个系统生命周期内,保证一个类只能产生一个实例,确保该类的唯一性。 1、节省资源。一个类只有一个实例,不存在多份实例,节省资源。 2、方便控制。在一些操作公共资源的场景时,避免了多个对象引起的复杂操作。 在程序中多次使用同一个对象且作

    2024年02月20日
    浏览(32)
  • matlab读取xml文档并储存为.mat文件详解

    起因是需要将c++中的矩阵传入matlab中进行处理,发现xml文档可以保留精度,因此选择xml作为中介完成从c++到matlab的数据传递。 xml文档结构如下: 其中data中为用科学记数法保留的float型变量。 使用MATLAB内置的xmlread函数读取XML文件,然后将数据保存到MAT文件中。matlab读取xml的代

    2024年02月11日
    浏览(33)
  • Unity 数据读取|(五)XML文件解析(XmlDocument,XmlTextReader)

    XML ,全称为可扩展标记语言( eXtensible Markup Language ),是一种用于描述、传输和存储数据的语言。它被设计用来传输和存储数据,与 HTML 不同,XML 的主要目的不在于显示数据,而是强调数据的结构性。XML 使用类似 HTML 的标签表示数据的结构和其他信息。 XML的优点: 易于人

    2024年02月05日
    浏览(43)
  • javaee dom4j读取xml文件

    dom4j-1.6.1.jar 运行

    2024年02月13日
    浏览(72)
  • Qt中XML文件创建及解析

    QT的配置文件中添加xml选项: 头文件:#include QXmlStreamWriter 写入的文件如图:   头文件:#include QXmlStreamReader  解析其中的Hobby模块: 输出结果:  

    2024年02月11日
    浏览(23)
  • IDEA创建Mybatis格式XML文件

    设置位置:File | Settings | Editor | File and Code Templates 选择Files,点击+号 Name中输入xml模板名(名称自行决定),后缀名extension输入xml(固定) 内容处输入Mybatis的xml文件模板内容,勾选Enable Live Template,点击应用 完成后,在需要xml文件处新建,选择设置好的xml名称,按需补充内容

    2024年02月12日
    浏览(37)
  • 常用脚本-持续更新(文件重命名、视频抽帧、拆帧、删除冗余文件、yolo2xml、转换图片格式、修改xml)

    所有代码位置 :Learning-Notebook-Codes/Python/常用脚本 脚本路径: codes/files_rename.py 脚本说明:可以自动重命名某个文件夹下指定类型的文件。 修改前文件名称: img1.jpg 修改后文件名称: Le0v1n-20231123-X-0001.jpg 脚本路径: codes/extract_frames.py 脚本说明:根据帧间隔对某个文件夹下指定

    2024年02月20日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包