XML
可扩展标记语言,有着严格的格式要求,要求元素是一对对显示的,通用性比较高。对于一些配置文件需要本地存储的,可以用它来代替数据库。但有一个缺点,就是在加载XML文件的时候是会把整个文件加载进内存之中。流模式很好的解决了这个问题,在对XML文件访问采用流模式,任何时候在内存中只有当前接口,不足的地方是它是只读的,仅向前的,不能再文档中去向后编辑增加。
<?xml version="1.0" encoding="UTF-8"?>
<!—下面是学生名单-->
<StudentList>
<Student id="1">
<Name>Getsu</Name>
<Sex>男</Sex>
</Student>
</StudentList>
文档声明
<?xml version=”1.0” encoding=”UTF-8”?>
?xml标记说明它是一个XML文档,Version为版本号注释
<!—下面是学生名单-->
注释的风格和html,WPF类似,使用注释时应该注意。- 注释不应该出现在XML声明之前
- 注释不能出现”–”字符,如
<!-- 下面是学生--名单>
- 注释不可以嵌套
根元素
<StudentList>... </StudentList>
每个文档必须有一个根元素元素
元素是XML中用来定义数据的一个基本单位,元素是由标记要定义的,同时分为非空标记和空标记
- 非空标记
<Student id="1">
<Name>Getsu</Name>
<Sex>男</Sex>
</Student> - 空标记
<Student id="1"></Student>
XML结构列表 - 非空标记
标记 | 描述 |
---|---|
XmlDocument | Xml文档 |
XmlNode | XML中单个的节点,如<Student> |
XmlAttribute | XML元素中的属性 |
XmlText | 表示元素或属性的文本内容 |
XmlElement | 最小元素,如<Name>Getsu</Name> |
XmlComment | 表示XML注释的内容 |
XmlDeclaration | XML文档第一行的声明 |
XML文档的创建
//创建一个XML文档对象
XmlDocument _doc = new XmlDocument();
// 声明XML头部信息
XmlDeclaration _dec = _doc.CreateXmlDeclaration("1.0", "UTF-8", null);
//添加进_doc对象的子节点
_doc.AppendChild(_dec);
//创建根节点
XmlElement root = _doc.CreateElement("StudentList");
_doc.AppendChild(root);
//创建根节点下的子节点
XmlElement student = _doc.CreateElement("Student");
//设置子节点属性
student.SetAttribute("id","1");
//子节点下再创建标记
XmlElement studentName = _doc.CreateElement("Name");
//设置内容
XmlText xmlText = _doc.CreateTextNode("Getsu");
//将内容添加到标记中
studentName.AppendChild(xmlText);
XmlElement studentSex = _doc.CreateElement("Sex");
studentSex.AppendChild(_doc.CreateTextNode("男"));
//将StudentName添加到Student节点下
student.AppendChild(studentName);
//将StudentSex添加到Student节点下
student.AppendChild(studentSex);
//将Student添加到根节点下
root.AppendChild(student);
//保存内容
_doc.Save("StudentList.xml");
XML文档的读取
XmlDocument doc = new XmlDocument();
// 加载XML文件
doc.Load("StudentList.xml");
// 获取根节点
XmlElement root = doc.DocumentElement;
//获取子节点
XmlNodeList students = root.GetElementsByTagName("Student");
//使用foreach读出集合
foreach(var student in students )
{
string id = ((XmlElement)student).GetAttribute("id");
string name = ((XmlElement)student).GetElementsByTagName("Name")[0].InnerText;
string sex = ((XmlElement)student).GetElementsByTagName("Sex")[0].InnerText;
Console.WriteLine("ID = {0}, name = {1}, sex = {2}", id, name, sex);
}
XML文件的增加
先读取文件,在进行类似于文件的创建那部分操作
// 读取XML文件
XmlDocument doc = new XmlDocument();
doc.Load("StudentList.xml");
//获得根节点
XmlElement root = doc.DocumentElement;
// 创建需要增加的部分
XmlElement student = doc.CreateElement("Student");
student.SetAttribute("id","2");
XmlElement stuName = doc.CreateElement("Name");
stuName.AppendChild(doc.CreateTextNode("Yyy"));
XmlElement stuSex = doc.CreateElement("Sex");
stuSex.AppendChild(doc.CreateTextNode("女"));
student.AppendChild(stuName);
student.AppendChild(stuSex);
root.AppendChild(student);
//保存
doc.Save("StudentList.xml");