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());
}
}