namespace xml学习
{
class Program
{
static void Main(string[] args)
{
#region xml写入1
创建了一个空的XDocument对象
创建了一个空的文档对象
//XDocument document = new XDocument();
1.1c创建一个文档声明
第一个参数是版本号 第二个参数是 字体 第三个参数是 表示是否为独立的xml文件
//XDeclaration xDec = new XDeclaration("1.0", "gb2312", "yes");
//document.Declaration=xDec;
1.2创建一个根节点
//XElement rootElement =new XElement("Order");
//document.Add(rootElement);
1.3增加一个CustomerName节点 内容是“杨中科”
//XElement cstNameElement = new XElement("CustomerName");
//cstNameElement.SetValue("杨中科");
//rootElement.Add(cstNameElement);
1.4增加OrderNumber节点
通过调用SetElemtValue
//rootElement.SetElementValue("OrderNumber","BJ200888");
1.5创建一个新对象 Items 节点
//XElement itemElement = new XElement("Items");
创建3个OrderItem节点
//XElement orderItemElement1 = new XElement("OrderItem");
//orderItemElement1.SetAttributeValue("Name","电脑");
//orderItemElement1.SetAttributeValue("Count", "30");
//itemElement.Add(orderItemElement1);
//XElement orderItemElement2 = new XElement("OrderItem");
//orderItemElement2.SetAttributeValue("Name", "电视");
//orderItemElement2.SetAttributeValue("Count", "2");
//itemElement.Add(orderItemElement2);
//XElement orderItemElement3 = new XElement("OrderItem");
//orderItemElement3.SetAttributeValue("Name", "水杯");
//orderItemElement3.SetAttributeValue("Count", "2");
//itemElement.Add(orderItemElement3);
//rootElement.Add(itemElement);
把这个空文档对象写入到xml文件中
//document.Save("orders.xml");
//Console.ReadKey();
#endregion
#region xml写入2
//List<Person> list = new List<Person>()
//{
// new Person(){Name="wangjian",Age=2,Email="djaj@yahoo.com"},
// new Person(){Name="sdfsa",Age=25,Email="sghgf@qq.com"},
// new Person(){Name="wagn",Age=28,Email="fgsdggj@126.com"}
//};
序列化
XmlSerializer xmlSerialize = new XmlSerializer(typeof(List<Person >));
xmlSerialize.Serialize();
//XDocument myDocument = new XDocument();
//XDeclaration myDeclaration = new XDeclaration("1.0","gb2312","yes");
//myDocument.Declaration = myDeclaration;
//XElement rootElement = new XElement("Root");
//myDocument.Add(rootElement);
//for (int i = 0; i < list.Count; i++)
//{
// XElement person = new XElement("Person");
// person.SetElementValue("Name",list[i].Name.ToString());
// person.SetElementValue("Age", list[i].Age.ToString());
// person.SetElementValue("Email", list[i].Email.ToString());
// rootElement.Add(person);
//}
//myDocument.Save("myDocument.xml");
#endregion
#region xml读取 myDocument.xml
//1.创建一个Dom对象
XDocument document = XDocument.Load("myDocument.xml");
//2.一定要找到根节点
XElement rootElement = document.Root;
//Console.WriteLine(rootElement.Name);
//Console.ReadKey();
//判断是否有属性:
Console.WriteLine(rootElement.Name );
//调用获取元素属性的方法
GetAttribues(rootElement);
//2.1获取根节点下的所有子节点
//不传参数 表示获取根节点下的所有子元素
//如果为Elements()方法传递参数 则表示要获取当前节点下的所有当前节点下的所有名称为
//为参数中给定的名称的元素
//只要返回类型是IEnumerable接口类型 无论是泛型还是非泛型都可以在foreach中遍历
foreach (XElement item in rootElement.Elements())
{
//这个循环其实就是遍历根节点下的每个子元素
//Console.WriteLine(item.Name);、
Console.WriteLine("节点====={0}",item.Name);
GetAttribues(item);
foreach (XElement subElemnt in item.Elements())
{
Console.WriteLine("子节点======================={0}",subElemnt.Name);
GetAttribues(subElemnt);
}
}
Console.ReadKey();
#endregion
}
//打印元素的属性
private static void GetAttribues(XElement anyElement)
{
Console.WriteLine(anyElement.Name + "元素的属性");
foreach (XAttribute attr in anyElement.Attributes())
{
Console.WriteLine(attr.Name + " " + attr.Value);
}
}
}
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
}
}
{
class Program
{
static void Main(string[] args)
{
#region xml写入1
创建了一个空的XDocument对象
创建了一个空的文档对象
//XDocument document = new XDocument();
1.1c创建一个文档声明
第一个参数是版本号 第二个参数是 字体 第三个参数是 表示是否为独立的xml文件
//XDeclaration xDec = new XDeclaration("1.0", "gb2312", "yes");
//document.Declaration=xDec;
1.2创建一个根节点
//XElement rootElement =new XElement("Order");
//document.Add(rootElement);
1.3增加一个CustomerName节点 内容是“杨中科”
//XElement cstNameElement = new XElement("CustomerName");
//cstNameElement.SetValue("杨中科");
//rootElement.Add(cstNameElement);
1.4增加OrderNumber节点
通过调用SetElemtValue
//rootElement.SetElementValue("OrderNumber","BJ200888");
1.5创建一个新对象 Items 节点
//XElement itemElement = new XElement("Items");
创建3个OrderItem节点
//XElement orderItemElement1 = new XElement("OrderItem");
//orderItemElement1.SetAttributeValue("Name","电脑");
//orderItemElement1.SetAttributeValue("Count", "30");
//itemElement.Add(orderItemElement1);
//XElement orderItemElement2 = new XElement("OrderItem");
//orderItemElement2.SetAttributeValue("Name", "电视");
//orderItemElement2.SetAttributeValue("Count", "2");
//itemElement.Add(orderItemElement2);
//XElement orderItemElement3 = new XElement("OrderItem");
//orderItemElement3.SetAttributeValue("Name", "水杯");
//orderItemElement3.SetAttributeValue("Count", "2");
//itemElement.Add(orderItemElement3);
//rootElement.Add(itemElement);
把这个空文档对象写入到xml文件中
//document.Save("orders.xml");
//Console.ReadKey();
#endregion
#region xml写入2
//List<Person> list = new List<Person>()
//{
// new Person(){Name="wangjian",Age=2,Email="djaj@yahoo.com"},
// new Person(){Name="sdfsa",Age=25,Email="sghgf@qq.com"},
// new Person(){Name="wagn",Age=28,Email="fgsdggj@126.com"}
//};
序列化
XmlSerializer xmlSerialize = new XmlSerializer(typeof(List<Person >));
xmlSerialize.Serialize();
//XDocument myDocument = new XDocument();
//XDeclaration myDeclaration = new XDeclaration("1.0","gb2312","yes");
//myDocument.Declaration = myDeclaration;
//XElement rootElement = new XElement("Root");
//myDocument.Add(rootElement);
//for (int i = 0; i < list.Count; i++)
//{
// XElement person = new XElement("Person");
// person.SetElementValue("Name",list[i].Name.ToString());
// person.SetElementValue("Age", list[i].Age.ToString());
// person.SetElementValue("Email", list[i].Email.ToString());
// rootElement.Add(person);
//}
//myDocument.Save("myDocument.xml");
#endregion
#region xml读取 myDocument.xml
//1.创建一个Dom对象
XDocument document = XDocument.Load("myDocument.xml");
//2.一定要找到根节点
XElement rootElement = document.Root;
//Console.WriteLine(rootElement.Name);
//Console.ReadKey();
//判断是否有属性:
Console.WriteLine(rootElement.Name );
//调用获取元素属性的方法
GetAttribues(rootElement);
//2.1获取根节点下的所有子节点
//不传参数 表示获取根节点下的所有子元素
//如果为Elements()方法传递参数 则表示要获取当前节点下的所有当前节点下的所有名称为
//为参数中给定的名称的元素
//只要返回类型是IEnumerable接口类型 无论是泛型还是非泛型都可以在foreach中遍历
foreach (XElement item in rootElement.Elements())
{
//这个循环其实就是遍历根节点下的每个子元素
//Console.WriteLine(item.Name);、
Console.WriteLine("节点====={0}",item.Name);
GetAttribues(item);
foreach (XElement subElemnt in item.Elements())
{
Console.WriteLine("子节点======================={0}",subElemnt.Name);
GetAttribues(subElemnt);
}
}
Console.ReadKey();
#endregion
}
//打印元素的属性
private static void GetAttribues(XElement anyElement)
{
Console.WriteLine(anyElement.Name + "元素的属性");
foreach (XAttribute attr in anyElement.Attributes())
{
Console.WriteLine(attr.Name + " " + attr.Value);
}
}
}
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
}
}