使用visual studio中自带的xml解析器,引入 System.Xml 命名空间。
1.向文件中写入配置xml文件
实现效果:
<?xml version="1.0" encoding="utf-8"?><某某某某公司>
<执行董事兼总经理>曾振帅</执行董事兼总经理>
<副总经理>老王
<经营经理>王二</经营经理>
<生产经理>李四</生产经理>
<财务经理>张三</财务经理>
</副总经理>
</某某某某公司>
/// <summary>
/// 创建xml文件
/// </summary>
/// <returns></returns>
static XmlDocument CreateXml()
{
XmlDocument xmlDoc= new XmlDocument();
if (File.Exists(FilePath))
{
Console.WriteLine("目标xml文件已存在并进行覆盖");
}
XmlDeclaration xmldec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "");
xmlDoc.AppendChild(xmldec);
XmlElement root = xmlDoc.CreateElement("某某某某公司");
xmlDoc.AppendChild(root);
XmlElement node_General_Manager = xmlDoc.CreateElement("执行董事兼总经理");
node_General_Manager.InnerText = "曾振帅";
root.AppendChild(node_General_Manager);
XmlElement node_Deputy_General_Manager = xmlDoc.CreateElement("副总经理");
node_Deputy_General_Manager.InnerText = "老王";
root.AppendChild(node_Deputy_General_Manager);
XmlElement node_Business_Manager = xmlDoc.CreateElement("经营经理");
node_Business_Manager.InnerText = "王二";
node_Deputy_General_Manager.AppendChild(node_Business_Manager);
XmlElement node_Production_Manager = xmlDoc.CreateElement("生产经理");
node_Production_Manager.InnerText = "李四";
node_Deputy_General_Manager.AppendChild(node_Production_Manager);
XmlElement node_Financial_Manager = xmlDoc.CreateElement("财务经理");
node_Financial_Manager.InnerText = "张三";
node_Deputy_General_Manager.AppendChild(node_Financial_Manager);
xmlDoc.Save(FilePath);
return xmlDoc;
}
2.读取xml配置文件
这儿读取的xml需要根据需要的xml文件进行读取,需要提前知道xml文件中的结构,得到我们需要的数据。
这儿我们通过我们的配置文件获取我们的需要的“副总经理”中的名字。
/// <summary>
/// 获取xml文件
/// </summary>
/// <returns></returns>
static XmlDocument GetXml()
{
XmlDocument xmlDoc = new XmlDocument();
if (!File.Exists(FilePath))
{
Console.WriteLine("目标xml文件不存在");
return null;
}
xmlDoc.Load(FilePath);
return xmlDoc;
}
/// <summary>
/// 获取副总经理名字
/// </summary>
/// <returns></returns>
static string GetDeputy_General_Manager(string name)
{
XmlDocument xml = GetXml();
foreach (XmlNode node in xml)
{
if (node.Name.Equals("某某某某公司"))
{
foreach (XmlNode nodeI in node)
{
if (nodeI.Name.Equals(name))
{
return nodeI.InnerText;
}
}
}
}
return null;
}
3.删除xml中指定节点
/// <summary>
/// 删除指定名字的节点及其子节点
/// </summary>
/// <param name="name"></param>
/// <param name="root"></param>
static void DeleteNode(string name,XmlNode root)
{
foreach (XmlNode node in root)
{
if (node.Name.Equals(name))
{
node.RemoveAll();
}
else
{
DeleteNode(name,node);
}
}
xmlDoc.Save(FilePath);
}
注意:对xml配置文件进行修改之后记得保存!!!
4. 设置节点属性
实现:
<?xml version="1.0" encoding="utf-8"?><某某某某公司 ab=“abc”>
<执行董事兼总经理 name=“曾振帅” />
<副总经理 name=“老王”>
<经营经理 name=“王二” />
<生产经理 name=“李四” />
<财务经理 name=“张三” />
</副总经理>
</某某某某公司>
/// <summary>
/// 创建xml文件
/// </summary>
/// <returns></returns>
static XmlDocument CreateXml()
{
XmlDocument xmlDoc = new XmlDocument();
if (File.Exists(FilePath))
{
Console.WriteLine("目标xml文件已存在并进行覆盖");
}
XmlDeclaration xmldec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "");
xmlDoc.AppendChild(xmldec);
XmlElement root = xmlDoc.CreateElement("某某某某公司");
root.SetAttribute("ab","abc"); //设置节点属性
xmlDoc.AppendChild(root);
XmlElement node_General_Manager = xmlDoc.CreateElement("执行董事兼总经理");
node_General_Manager.SetAttribute("name", "曾振帅"); //设置节点属性
root.AppendChild(node_General_Manager);
XmlElement node_Deputy_General_Manager = xmlDoc.CreateElement("副总经理");
node_Deputy_General_Manager.SetAttribute("name", "老王"); //设置节点属性
root.AppendChild(node_Deputy_General_Manager);
XmlElement node_Business_Manager = xmlDoc.CreateElement("经营经理");
node_Business_Manager.SetAttribute("name", "王二");
node_Deputy_General_Manager.AppendChild(node_Business_Manager);
XmlElement node_Production_Manager = xmlDoc.CreateElement("生产经理");
node_Production_Manager.SetAttribute("name", "李四");
node_Deputy_General_Manager.AppendChild(node_Production_Manager);
XmlElement node_Financial_Manager = xmlDoc.CreateElement("财务经理");
node_Financial_Manager.SetAttribute("name", "张三");
node_Deputy_General_Manager.AppendChild(node_Financial_Manager);
xmlDoc.Save(FilePath);
return xmlDoc;
}
5.获取节点属性
/// <summary>
/// 获取 经理名字 (Xml 属性)
/// </summary>
/// <returns></returns>
static string GetManagerName(string name)
{
XmlDocument xml = GetXml();
foreach (XmlNode node in xml)
{
if (node.Name.Equals("某某某某公司"))
{
foreach (XmlNode nodeI in node)
{
if (nodeI.Name.Equals("执行董事兼总经理"))
{
foreach (XmlNode nodeII in nodeI)
{
if (nodeII.Name.Equals("副总经理"))
{
foreach (XmlNode nodeIII in nodeII)
{
if (nodeIII.Name.Equals(name))
{
foreach (XmlAttribute item in nodeIII.Attributes)
{
if(item.Name=="name")
{
return item.Value;
}
}
}
}
}
}
}
}
}
}
return null;
}