XML是一种可扩展标记语言,在开发c#程序过程中经常会使用到,下面几段代码是我平时在开发c#程序中整理出来的对XML文件的基本操作代码,其中包含了“创建生成XML文件”“向已有XML文件中插入新节点”“修改已有XML文件中的节点信息和属性”“删除XML文件中的节点属性和信息”“读取XML文件中的数据”,在c#中可对XML文件操作的方法有很多,这只是我个人了解的其中一种,代码只写了基本的处理流程,大家可以根据需要再进行深加工处理。
/// <summary>创建XML
/// </summary>
public void CreateXML()
{
XmlDocument xmlDoc = newXmlDocument();
XmlDeclaration xmlDec =xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
xmlDoc.A(xmlDec);//设置文档属性
XmlElement xmlelem =xmlDoc.createElement_x("RootNode");//添加根节点
xmlDoc.A(xmlelem);
XmlNode root =xmlDoc.SelectSingleNode("RootNode");//查找根节点
XmlElement xe_parent =xmlDoc.createElement_x("Parent");//创建一个父节点
xe_parent.SetAttribute("name", "n1");//设置该节点属性(自定义,可不设置)
XmlElement xe_child1 =xmlDoc.createElement_x("child1");//创建第一个子节点
xe_child1.InnerText ="abc";//设置文本节点
xe_parent.A(xe_child1);//添加到父节点
XmlElement xe_child2 =xmlDoc.createElement_x("child2");//创建第二个子节点
xe_child2.InnerText ="def";//设置文本节点
xe_parent.A(xe_child2);//添加到父节点
//创建N个子节点
//......
root.A(xe_parent);//添加到根节点
xmlDoc.Save(@"E:\test.xml");//设置一个保存路径
}
/// <summary>向XML中插入新节点
/// </summary>
public void AddXMLNode()
{
XmlDocument xmlDoc = newXmlDocument();
xmlDoc.Load(@"E:\test.xml"); //加载一个xml文件
XmlNode root =xmlDoc.SelectSingleNode("RootNode");//查找根节点RootNode
XmlElement xe_parent =xmlDoc.createElement_x("Parent");//创建一个父节点
xe_parent.SetAttribute("name", "abc");//设置该节点属性(自定义,可不设置)
XmlElement xe_child1 =xmlDoc.createElement_x("child1");//创建第一个子节点
xe_child1.InnerText ="abc";//设置文本节点
xe_parent.A(xe_child1);//添加到父节点
XmlElement xe_child2 =xmlDoc.createElement_x("child2");//创建第二个子节点
xe_child2.InnerText ="def";//设置文本节点
xe_parent.A(xe_child2);//添加到父节点
//创建N个子节点
//......
root.A(xe_parent);//添加节点到根节点RootNode中
xmlDoc.Save(@"E:\test.xml");//保存
}
/// <summary>修改XML中某节点的信息
/// </summary>
public void UpdateXMLNodeInfo()
{
XmlDocument xmlDoc = newXmlDocument();
xmlDoc.Load(@"E:\test.xml"); //加载一个xml文件
XmlNodeList nodeList =xmlDoc.SelectSingleNode("RootNode").ChildNodes;//获取根节点的所有子节点
foreach (XmlNode xn in nodeList)//遍历根节点的所有子节点
{
XmlElement xmlDoc2 =(XmlElement)xn;//将根节点的子节点类型转换为XmlElement类型
//xmlDoc2.GetAttribute("属性名")可取根节点的子节点属性值
//xmlDoc2.SetAttribute("属性名","属性值")可修改根节点的子节点属性值
//xmlDoc2.ChildNodes;可继续取根节点的子节点下的所有子节点
if(xmlDoc2.GetAttribute("name") == "abc")//找到相应节点
{
XmlNodeList childNodeList =xmlDoc2.ChildNodes;//继续获取子节点的所有子节点
foreach (XmlNode xn2 inchildNodeList)//遍历子节点的所有子节点
{
XmlElement xmlDoc3 =(XmlElement)xn2;//转换类型
if (xmlDoc3.Name =="child1")//找到相应节点
{
xmlDoc3.InnerText ="11111111";//修改相应节点的值
break;
}
}
break;
}
}
xmlDoc.Save(@"E:\test.xml");//保存
}
/// <summary>删除XML中某个节点的属性或信息
/// </summary>
public void DelXMLNodeInfo()
{
XmlDocument xmlDoc = newXmlDocument();
xmlDoc.Load(@"E:\test.xml"); //加载一个xml文件
XmlNodeList nodeList = xmlDoc.SelectSingleNode("RootNode").ChildNodes;//获取根节点的所有子节点
foreach (XmlNode xn in nodeList)//遍历根节点的所有子节点
{
XmlElement xmlDoc2 =(XmlElement)xn;//转换类型
if(xmlDoc2.GetAttribute("name") == "abc")//找到相应节点
{
xmlDoc2.RemoveAttribute("name");//删除该节点的name属性
}
else if(xmlDoc2.GetAttribute("name") == "def")
{
xmlDoc2.RemoveAll();//删除该节点的全部内容
}
}
xmlDoc.Save(@"E:\test.xml");
}
/// <summary>读取XML文件中的数据
/// </summary>
public void GetXMLInfo()
{
XmlDocument xmlDoc = newXmlDocument();
xmlDoc.Load(@"E:\test.xml"); //加载一个xml文件
XmlNodeList nodeList =xmlDoc.SelectSingleNode("RootNode").ChildNodes;//获取根节点的所有子节点
foreach (XmlNode xn in nodeList)//遍历根节点的所有子节点
{
XmlElement xmlDoc2 =(XmlElement)xn;//转换类型
Console.WriteLine(xmlDoc2.GetAttribute("name"));//打印根节点的所有子节点的属性值
XmlNodeList nodeList2 =xmlDoc2.ChildNodes;//获取子节点下的所有子节点
foreach (XmlNode xn2 innodeList2)//遍历子节点下的所有子节点
{
Console.WriteLine(xn2.InnerText);//打印子节点下的所有子节点文本信息
}
}
}
转载自:点击打开链接