- 以后再写代码的时候,先从中间层|接口|协议开始入手。
- 在写XML时注意的事情:
- 在EditPlus中,Tab是缩进
- 在头文件中的编码格式是"utf-8"是,在Editplus中保存时要注意保存下的格式,编写时的格式与保存时的格式要一致,否则会报错
- 拖到浏览器中检查是否有错
3、
namespace XmlReadAndWrite
{
class
Program
{
static
void Main(string[] args)
{
XmlWrite();
XmlRead();
Console.ReadKey();
}
private
static
void XmlRead()
{
//1、通过静态类的加载方法实例化Xml
XDocument xdoc = XDocument.Load("1.xml");
//2、获得xml文档的根元素【一级节点--A级节点】
XElement root = xdoc.Root;
//3、根元素下会有很多直接子元素,会是一个子元素集合,用IEnumerable类的对象接受返回值
//实现IEnumerable接口,使本类可以被迭代(foreach),公开枚举数,该枚举数支持在非泛型集合上进行简单迭代
//二级节点--AB+【由root节点得到B节点集】
IEnumerable bs = root.Elements();
//4、遍历B级节点
foreach (XElement b in bs)
{
Console.WriteLine(b.Name + "==" + b.Attribute("id").Value);
//5、有B得到得到C级节点,要展示的信息都在C级
//因为B级节点下有许多C级节点,C级可能不同,此时Element()方法可以用参数指明元素
foreach (XElement c in b.Elements())
{
//显示子元素的名字和属性id的值
?
//显示子元素的名字
Console.WriteLine(c.Element("name").Value);
//显示子元素的性别
Console.WriteLine(c.Element("gender").Value);
//显示子元素的年龄
Console.WriteLine(c.Element("age").Value);
Console.WriteLine("=========================================");
}
}
}
?
private
static
void XmlWrite()
{
//1、XDocument所在namespace:using System.Xml.Linq;
//2、XML文档声明语句
XDocument xdoc = new
XDocument();
//3、元素声明语句,XElement有一个参数的构造函数,参数类型是XName,但可以用string,"school"
//该元素用作根节点[A]
XElement root = new
XElement("school");//根节点
?
//4、再声明一个元素
//该元素用作二级节点[B]
XElement myclass=new
XElement("class");
myclass.SetAttributeValue("id","1115就业班");
//5、再声明一个元素
//该元素用作三级节点[C]
XElement student = new
XElement("student");//子节点
?
?
//6、XML写的操作用Set***
student.SetAttributeValue("id", "9527");//student元素设置属性
student.SetElementValue("name", "周星驰");//student元素设置元素
student.SetElementValue("age", "50");//student元素设置元素
student.SetElementValue("gender", "男");//student元素设置元素
//7、组织xml树
//从后往前,三级节点加到二级节点;二级节点加到根节点,根再加到xdoc上
myclass.Add(student);
root.Add(myclass);
xdoc.Add(root);
//8、最后
xdoc.Save("1.xml");
Console.WriteLine("OK");
}
}
}