XML文件(CRUD)
可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
1.可扩展标记语言是一种很像超文本标记语言的标记语言。
2.它的设计宗旨是传输数据,而不是显示数据。
3.它的标签没有被预定义。您需要自行定义标签。
4.它被设计为具有自我描述性。
5.它是W3C的推荐标准。
XML格式:
<?xml version="1.0" encoding="utf-8" ?> 张三 18 湖南长沙1.<?xml version="1.0" encoding="utf-8" ?>
?XML标记说明它是一个XML文档,version为版本号,encoding属性表明是编码格式为”utf-8”,standalone取”yes”时,表明该文件未引用其它外部文件。
2.
每个文档必须有有一个根元素,没有根元素将会在解析的时候出现错误
3.
id属于当前Student节点的属性而值是1
4.XML注释
< !–注释内容–>
XML结构列表:
XmlDocument XML文档
XmlNode XML中单个的节点,如
XmlAttribute XML元素中的属性
XmlText 表示元素或属性的文本内容
XmlElement 最小元素,如张三
XmlComment 表示XML注释的内容
XmlDeclaration XML文档第一行的声明
常用对象属性及方法:
1.XmlDocument对象:主要是针对节点的CUID操作
DocumentElement 属性 获取文档的根
ChildNodes 属性 获取节点的所有子节点
Name 属性 获取节点的限定名称
Value 属性 获取或设置节点的值
Load() 方法 加载整个XML的结构
CreateAttribute 方法 创建具有指定Name的属性
Save() 方法 将XML文档保存到指定的位置
CreateXmlDeclaration 方法 创建一个具有指定值的XmlDeclaration节点
AppendChild 方法 将指定的节点添加到该节点的子节点列表的末尾。
2.XmlNode对象:为抽象类,做为以上两类的基类,提供一些操作节点的方法
InnerText 属性 当前节点的值
Name 属性 当前节点的名字
ChildNodes 属性 当前节点的所有子节点
CreateNode 方法 创建一个新的节点
RemoveAll 方法 移除当前节点的所有子节点和/或属性
3.XmlElement对象:主要是针对节点的一些属性进行操作
SelectSingleNode 方法 选择匹配XPath表达式的第一个XmlNode
SelectNode 方法 选择匹配XPath表达式的XMLNode集合
xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<!--根节点-->
<Persons>
<!--子节点-->
<Person>
<Name>张三</Name>
<Age>18</Age>
<Sex>男</Sex>
</Person>
</Persons>
测试类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace base13
{
class Program
{
static void Main(string[] args)
{
#region 获取子节点
XmlDocument xmld = new XmlDocument();
//加载.xml文件
xmld.Load("XML1.xml");
//获取根节点
XmlElement root = xmld.DocumentElement;
//Console.WriteLine(root.ChildNodes.Count);
//Console.WriteLine(root.Name);
//遍历当前节点的所有子节点
foreach (XmlNode xd in root.ChildNodes)
{
if (xd.NodeType != XmlNodeType.Comment)//判读是否为注释
{
//遍历当前节点的子节点
foreach (XmlNode cxd in xd.ChildNodes)
{
Console.WriteLine(cxd.Name);
}
}
}
#endregion
#region 增加节点
//XmlDocument xmld = new XmlDocument();
加载.xml文件
//xmld.Load("XML1.xml");
获取根节点
//XmlElement root = xmld.DocumentElement;
创建Person节点
//XmlElement personxe = xmld.CreateElement("Person");
创建Name节点
//XmlElement namexe = xmld.CreateElement("Name");
给Name节点赋值
//namexe.InnerText = "李四";
把Name节点放入Person节点
//personxe.AppendChild(namexe);
创建Age节点
//XmlElement agexe = xmld.CreateElement("Age");
给Age节点赋值
//agexe.InnerText = "19";
把Age节点放入Person节点
//personxe.AppendChild(agexe);
创建Sex节点
//XmlElement sexxe = xmld.CreateElement("Sex");
给Sex节点赋值
//sexxe.InnerText = "女";
把Sex节点放入Person节点
//personxe.AppendChild(sexxe);
保存到Persons根节点中
//root.AppendChild(personxe);
文件保存
//xmld.Save("XML1.xml");
遍历当前节点的所有子节点
//foreach (XmlNode xd in root.ChildNodes)
//{
// if (xd.NodeType != XmlNodeType.Comment)//判读是否为注释
// {
// //遍历当前节点的子节点
// foreach (XmlNode cxd in xd.ChildNodes)
// {
// Console.WriteLine(cxd.Name);
// }
// }
//}
#endregion
#region 修改
//XmlDocument xmld = new XmlDocument();
加载.xml文件
//xmld.Load("XML1.xml");
获取根节点
//XmlElement root = xmld.DocumentElement;
//bool flag = false;
//foreach (XmlNode xd in root.ChildNodes)
//{
// //不等于回车跟空格
// if (xd.NodeType != XmlNodeType.Comment && xd.NodeType != XmlNodeType.Whitespace)
// {
// XmlNodeList xmlist = xd.ChildNodes;
// if (xmlist.Count > 0)
// {
// foreach (XmlNode cxd in xmlist)
// {
// if (cxd.Name.Equals("Name"))
// {
// if (cxd.InnerText.Equals("张三"))
// {
// flag = true;
// }
// }
// if (flag)
// {
// if (cxd.Name.Equals("Age"))
// {
// cxd.InnerText = "20";
// break;
// }
// }
// }
// }
// }
//}
//xmld.Save("XML1.xml");
//foreach (XmlNode xd in root.ChildNodes)
//{
// if (xd.NodeType != XmlNodeType.Comment)//判读是否为注释
// {
// //遍历当前节点的子节点
// foreach (XmlNode cxd in xd.ChildNodes)
// {
// Console.WriteLine(cxd.Name);
// }
// }
//}
#endregion
#region 删除
//XmlDocument xmld = new XmlDocument();
加载.xml文件
//xmld.Load("XML1.xml");
获取根节点
//XmlElement root = xmld.DocumentElement;
//foreach (XmlNode xd in root.ChildNodes)
//{
// //不等于回车跟空格 ChildNodes属性 当前节点的所有子节点
// if (xd.NodeType != XmlNodeType.Comment && xd.NodeType != XmlNodeType.Whitespace)
// {
// foreach (XmlNode cxd in xd.ChildNodes)
// {
// if (cxd.InnerText.Equals("李四"))
// {
// cxd.ParentNode.RemoveAll();
// root.RemoveChild(cxd);
// }
// }
// }
//}
//xmld.Save("XML1.xml");
#endregion
#region 节点
//添加属性
//XmlDocument xmld = new XmlDocument();
//xmld.Load("XML1.xml");
//XmlElement root= xmld.DocumentElement;
//添加属性
//root.SetAttribute("id","1");
//xmld.Save("XML1.xml");
改
if (root.GetAttribute("id")!=null)
{
root.SetAttribute("id","20");
}
删除
//root.RemoveAllAttributes();//删除所有
//root.RemoveAttribute("c");
查询
//Console.WriteLine(root.GetAttribute("id"));
//xmld.Save("XML1.xml");//保存
#endregion
//参考资料在QQ群:683782676
}
}
}