using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
using System.Windows.Forms;
//不同的命名空间
namespace TestXML
{
class XML
{
string xmlname;
string name;
string path = Application.StartupPath;
XmlDocument xmlDoc;
XmlNode node, root;
public XML(string str)
{
xmlname = str;
CreateXmlFile();
}
/// <summary>
/// 创建节点
/// </summary>
/// <param name="xmlDoc"></param> xml文档
/// <param name="parentNode"></param> 父节点
/// <param name="name"></param> 节点名
/// <param name="value"></param> 节点值
public void CreateNode( XmlNode parentNode, string name, string value)
{
XmlNode node = xmlDoc.CreateNode(XmlNodeType.Element, name, null);
node.InnerText = value;
parentNode.AppendChild(node);
}
/// <summary>
/// 通过文件读取xml
/// </summary>
public string QueryElementByFile(string section_name,string val_key)
{
xmlDoc = new XmlDocument();
//获取根节点
xmlDoc.Load(path + "\\" + xmlname);
XmlElement root = xmlDoc.DocumentElement;
//获取子节点
XmlNodeList personNodes = root.GetElementsByTagName(section_name);
//使用foreach循环读出集合
foreach (XmlNode node in personNodes)
{
//string id = ((XmlElement)node).GetAttribute("id");
if (node.Name.ToString() == section_name)
{
name = ((XmlElement)node).GetElementsByTagName(val_key)[0].InnerText;
return name;
}
//Console.WriteLine("name:" + name);
}
return "";
}
/// <summary>
/// 创建XML文件
/// </summary>
public void CreateXmlFile()
{
if (File .Exists(path + "\\" + xmlname))
{
xmlDoc = new XmlDocument();
xmlDoc.Load(path + "\\" + xmlname);
}
else
{
xmlDoc = new XmlDocument();
//创建类型声明节点
node = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "");
xmlDoc.AppendChild(node);
//创建根节点
root = xmlDoc.CreateElement("Config");
xmlDoc.AppendChild(root);
try
{
xmlDoc.Save(path + "\\" + xmlname);
}
catch (Exception e)
{
//显示错误信息
Console.WriteLine(e.Message);
}
}
}
/// <summary>
///
/// </summary>
XmlElement Shutdent, eSex;
XmlNodeList nodelist;
XmlText tSex;
int count =0;
/// <summary>
/// 创建子节点:含二级三级节点
/// </summary>
/// <param name="section_name"></param>
/// <param name="property_name"></param>
/// <param name="key_name"></param>
public void CreateXmlNode(string section_name, string property_name, string key_name)
{
if (!File.Exists(path + "\\" + xmlname))
{
xmlDoc = new XmlDocument();
xmlDoc.Load(path + "\\" + xmlname);
}
count = count + 1;
XmlElement root = xmlDoc.DocumentElement; //得到根节点
if (count==1)
{
Shutdent = xmlDoc.CreateElement(section_name);//添加二级子节点
eSex = xmlDoc.CreateElement(property_name);//添加三级子节点
tSex = xmlDoc.CreateTextNode(key_name);//添加三级子节点属性值
eSex.AppendChild(tSex);//子节点添加内容
Shutdent.AppendChild(eSex);//将子节点添加进学生标记
}
else
{
XmlNode memberlist = xmlDoc.SelectSingleNode("Config");
nodelist = memberlist.ChildNodes;
foreach (XmlNode node in nodelist)
{
int nodecount=node.ChildNodes.Count;
// Console.WriteLine(" node.ChildNodes.Count:" + nodecount);
if (node.Name.ToString() == section_name)//判断节点名是否相同
{
for (int i = 0; i < nodecount; i++)
{
if (node.ChildNodes[i].InnerText.ToString() == key_name && node.ChildNodes[i].Name.ToString() == property_name)//判断节点内容是否相同
{
Console.WriteLine("重复增加!!!:" + node.ChildNodes[i].InnerText.ToString());
return;
}
else
{
eSex = xmlDoc.CreateElement(property_name);//添加三级子节点
tSex = xmlDoc.CreateTextNode(key_name);//添加三级子节点属性值
eSex.AppendChild(tSex);//子节点添加内容
Shutdent.AppendChild(eSex);//将子节点添加进学生标记
//MessageBox.Show("成功!!!:" + node.Name.ToString());
}
}
}
else
{
Shutdent = xmlDoc.CreateElement(section_name);//添加二级子节点
eSex = xmlDoc.CreateElement(property_name);//添加三级子节点
tSex = xmlDoc.CreateTextNode(key_name);//添加三级子节点属性值
eSex.AppendChild(tSex);//子节点添加内容
Shutdent.AppendChild(eSex);//将子节点添加进二级标记
}
}
}
root.AppendChild(Shutdent);//将<学生>标记添加进根节点
try
{
xmlDoc.Save(path + "\\" + xmlname);
}
catch (Exception e)
{
//显示错误信息
Console.WriteLine(e.Message);
}
}
}
}
C#中利用XML文件保存数据
3星 · 超过75%的资源 需积分: 49 153 浏览量
2017-10-25
21:37:38
上传
评论
收藏 2KB RAR 举报
已被格式化的叔叔
- 粉丝: 84
- 资源: 8
最新资源
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
- C语言实现直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、计数排序,并带图详解.zip
- 常用工具集参考用于图像等数据处理
- 音乐展示网页、基于Stenography的图像数字水印添加与提取,以及基于颜色矩和Tamura算法的图像相似度评估算法py源码
- 基于EmguCV(OpenCV .net封装),图像数字水印加解密算法的实现,其中包含最低有效位算法,离散傅里叶变换算法+文档书
- 基于matlab+DWT的图像水印项目,数字水印+源代码+文档说明+图片+报告pdf
- (优秀毕业设计)基于python实现的数字图像可视化水印系统的设计与实现,多种数字算法实现+源代码+文档说明+理论演示pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈