linq to xml创建xml文档

1. 使用Linq To Xml 创建xml文档

基本用法

XDocument xDocument = new XDocument(
                    new XDeclaration("1.0", "utf-8", null),
                        new XComment("这是注释"),
                        new XElement("Students",
                            new XElement("Student", new XAttribute("Id", 101),
                                new XElement("Name", "张三"),
                                new XElement("Age", 25),
                                new XElement("Sex", "F")
                            ),
                            new XElement("Student", new XAttribute("Id", 102),
                                new XElement("Name", "李四"),
                                new XElement("Age", 24),
                                new XElement("Sex", "M")
                            ),
                            new XElement("Student", new XAttribute("Id", 103),
                                new XElement("Name", "王五"),
                                new XElement("Age", 26),
                                new XElement("Sex", "F")
                            )
                        )
                    );

                using (MemoryStream ms = new MemoryStream())
                {
                    xDocument.Save(ms);
                    using (StreamReader sr = new StreamReader(ms, Encoding.UTF8))
                    {
                        ms.Position = 0;
                        Console.WriteLine(sr.ReadToEnd());
                    }
                }

在这里插入图片描述

进阶用法

新建一个student实体类,并且初始化数据

    public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public string Sex { get; set; }

        public static List<Student> GetInitData()
        {
            return new List<Student> {
            new Student{Id=101, Name="张三",Age=25,Sex="F" },
            new Student{Id=102, Name="李四",Age=24,Sex="M" },
            new Student{Id=103, Name="王五",Age=26,Sex="F" }
            };
        }
    }
//进阶用法
                XDocument xDocument = new XDocument(
                    new XDeclaration("1.0", "utf-8", null),
                        new XComment("这是注释"),
                        new XElement("Students",

                      from student in Student.GetInitData()
                      select new XElement("Student", new XAttribute("Id", student.Id),
                                new XElement("Name", student.Name),
                                new XElement("Age", student.Age),
                                new XElement("Sex", student.Sex)
                            )
                        )
                    );

                using (MemoryStream ms = new MemoryStream())
                {
                    xDocument.Save(ms);
                    using (StreamReader sr = new StreamReader(ms, Encoding.UTF8))
                    {
                        ms.Position = 0;
                        Console.WriteLine(sr.ReadToEnd());
                    }
                }
            }

            Console.WriteLine("Hello World!");
            Console.ReadLine();

在这里插入图片描述

2. 新增节点

末尾追加节点

//原始用法
XDocument xDocument = new XDocument(
    new XDeclaration("1.0", "utf-8", null),
    new XComment("这是注释"),
    new XElement("Students",
        new XElement("Student", 
        new XAttribute("Id", 101),
        new XElement("Name", "张三"),
        new XElement("Age", 25),
        new XElement("Sex", "F")),
    new XElement("Student",
   		new XAttribute("Id", 102),
        new XElement("Name", "李四"),
        new XElement("Age", 24),
        new XElement("Sex", "M")),
    new XElement("Student",
    	new XAttribute("Id", 103),
    	new XElement("Name", "王五"),
    	new XElement("Age", 26),
    	new XElement("Sex", "F"))
    )
);

//在 Students 节点末尾追加节点
xDocument.Element("Students").Add(
	new XElement("Student", 
		new XAttribute("Id", 104),
		new XElement("Name", "赵六"),
		new XElement("Age", 29),
		new XElement("Sex", "F")));

using (MemoryStream ms = new MemoryStream())
{
	xDocument.Save(ms);
    using (StreamReader sr = new StreamReader(ms, Encoding.UTF8))
    {
    	ms.Position = 0;
        Console.WriteLine(sr.ReadToEnd());
    }
}

在这里插入图片描述

第一项前插入节点

//原始用法
XDocument xDocument = new XDocument(
    new XDeclaration("1.0", "utf-8", null),
    new XComment("这是注释"),
    new XElement("Students",
        new XElement("Student", 
        new XAttribute("Id", 101),
        new XElement("Name", "张三"),
        new XElement("Age", 25),
        new XElement("Sex", "F")),
    new XElement("Student",
   		new XAttribute("Id", 102),
        new XElement("Name", "李四"),
        new XElement("Age", 24),
        new XElement("Sex", "M")),
    new XElement("Student",
    	new XAttribute("Id", 103),
    	new XElement("Name", "王五"),
    	new XElement("Age", 26),
    	new XElement("Sex", "F"))
    )
);

//在 Students 节点第一个节点前插入
xDocument.Element("Students").AddFirst(
	new XElement("Student", 
		new XAttribute("Id", 104),
		new XElement("Name", "赵六"),
		new XElement("Age", 29),
		new XElement("Sex", "F")));

using (MemoryStream ms = new MemoryStream())
{
	xDocument.Save(ms);
    using (StreamReader sr = new StreamReader(ms, Encoding.UTF8))
    {
    	ms.Position = 0;
        Console.WriteLine(sr.ReadToEnd());
    }
}

在这里插入图片描述

当前节点前/后插入

XDocument xDocument = new XDocument(new XDeclaration("1.0", Encoding.UTF8.ToString(), null),new XElement("root"));

XElement student1 = new XElement("student1",new XElement("Id",101));
xDocument.Element("root").Add(student1);
                
//在当前节点前插入
xDocument.Element("root").Element("student1").AddBeforeSelf(new XElement("student2", new XElement("Id", 102)));

//在当前节点后插入
student1.AddAfterSelf(new XElement("student3", new XElement("Id", 103)));

using (MemoryStream ms = new MemoryStream())
{
	xDocument.Save(ms);
	using (StreamReader sr = new StreamReader(ms, Encoding.UTF8))
    {
		ms.Position = 0;
		Console.WriteLine(sr.ReadToEnd());
	}
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: 在C#中,使用Linq to XML可以方便地进行XML文件的读写操作。首先,我们需要加载XML文件,可以使用XDocument类的Load方法来加载文件\[1\]。然后,我们可以通过获取根元素来访问XML文件的内容,使用Root属性可以获取根元素\[2\]。接下来,我们可以使用Elements方法获取根元素的所有直接子元素,并通过遍历这些子元素来获取它们的名称和属性值\[2\]。如果需要进一步访问子元素的子元素,可以使用Elements方法继续获取\[2\]。另外,如果XML文件中使用了命名空间,我们可以使用XName类的Get方法来指定命名空间\[3\]。通过这些方法,我们可以方便地读取和解析XML文件中的数据。当需要写入XML文件时,可以使用XDocument类的Save方法将修改后的XML文件保存到指定的路径。 #### 引用[.reference_title] - *1* *3* [Linq to Xml读写xml](https://blog.csdn.net/donghan2019/article/details/101946892)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [C#基础精华06(Linq To XML,读取xml文件,写入xml)](https://blog.csdn.net/XHQT520/article/details/50401669)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值