C#中如何创建xml文件 增、删、改、查 xml节点信息
2015-05-28 19:30
603 查看
http://www.cr173.com/html/10704_1.html
【注:因为我们要使用xml相关的语法和方法,所以一定要引入命名空间 System.Xml】
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace OperateXML
{
class Program
{
static void Main(string[] args)
{
try
{
//xml文件存储路径
string myXMLFilePath ="E:\\MyComputers.xml";
//生成xml文件
GenerateXMLFile(myXMLFilePath);
//遍历xml文件的信息
GetXMLInformation(myXMLFilePath);
//修改xml文件的信息
ModifyXmlInformation(myXMLFilePath);
//向xml文件添加节点信息
AddXmlInformation(myXMLFilePath);
//删除指定节点信息
DeleteXmlInformation(myXMLFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
private static void GenerateXMLFile(string xmlFilePath)
{
try
{
//初始化一个xml实例
XmlDocument myXmlDoc =new XmlDocument();
//创建xml的根节点
XmlElement rootElement = myXmlDoc.CreateElement("Computers");
//将根节点加入到xml文件中(AppendChild)
myXmlDoc.AppendChild(rootElement);
//初始化第一层的第一个子节点
XmlElement firstLevelElement = myXmlDoc.CreateElement("Computer");
//填充第一层的第一个子节点的属性值(SetAttribute)
firstLevelElement.SetAttribute("ID", "");
firstLevelElement.SetAttribute("Description", "Made in China");
//将第一层的第一个子节点加入到根节点下
rootElement.AppendChild(firstLevelElement);
//初始化第二层的第一个子节点
XmlElement secondLevelElement = myXmlDoc.CreateElement("name");
//填充第二层的第一个子节点的值(InnerText)
secondLevelElement.InnerText ="Lenovo";
firstLevelElement.AppendChild(secondLevelElement);
XmlElement secondLevelElement = myXmlDoc.CreateElement("price");
secondLevelElement.InnerText ="";
firstLevelElement.AppendChild(secondLevelElement);
XmlElement firstLevelElement = myXmlDoc.CreateElement("Computer");
firstLevelElement.SetAttribute("ID", "");
firstLevelElement.SetAttribute("Description", "Made in USA");
rootElement.AppendChild(firstLevelElement);
XmlElement secondLevelElement = myXmlDoc.CreateElement("name");
secondLevelElement.InnerText ="IBM";
firstLevelElement.AppendChild(secondLevelElement);
XmlElement secondLevelElement = myXmlDoc.CreateElement("price");
secondLevelElement.InnerText ="";
firstLevelElement.AppendChild(secondLevelElement);
//将xml文件保存到指定的路径下
myXmlDoc.Save(xmlFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
privatestaticvoid GetXMLInformation(string xmlFilePath)
{
try
{
//初始化一个xml实例
XmlDocument myXmlDoc =new XmlDocument();
//加载xml文件(参数为xml文件的路径)
myXmlDoc.Load(xmlFilePath);
//获得第一个姓名匹配的节点(SelectSingleNode):此xml文件的根节点
XmlNode rootNode = myXmlDoc.SelectSingleNode("Computers");
//分别获得该节点的InnerXml和OuterXml信息
string innerXmlInfo = rootNode.InnerXml.ToString();
string outerXmlInfo = rootNode.OuterXml.ToString();
//获得该节点的子节点(即:该节点的第一层子节点)
XmlNodeList firstLevelNodeList = rootNode.ChildNodes;
foreach (XmlNode node in firstLevelNodeList)
{
//获得该节点的属性集合
XmlAttributeCollection attributeCol = node.Attributes;
foreach (XmlAttribute attri in attributeCol)
{
//获取属性名称与属性值
string name = attri.Name;
string value = attri.Value;
Console.WriteLine("{} = {}", name, value);
}
//判断此节点是否还有子节点
if (node.HasChildNodes)
{
//获取该节点的第一个子节点
XmlNode secondLevelNode = node.FirstChild;
//获取该节点的名字
string name = secondLevelNode.Name;
//获取该节点的值(即:InnerText)
string innerText = secondLevelNode.InnerText;
Console.WriteLine("{} = {}", name, innerText);
//获取该节点的第二个子节点(用数组下标获取)
XmlNode secondLevelNode = node.ChildNodes[];
name = secondLevelNode.Name;
innerText = secondLevelNode.InnerText;
Console.WriteLine("{} = {}", name, innerText);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
privatestaticvoid ModifyXmlInformation(string xmlFilePath)
{
try
{
XmlDocument myXmlDoc =new XmlDocument();
myXmlDoc.Load(xmlFilePath);
XmlNode rootNode = myXmlDoc.FirstChild;
XmlNodeList firstLevelNodeList = rootNode.ChildNodes;
foreach (XmlNode node in firstLevelNodeList)
{
//修改此节点的属性值
if (node.Attributes["Description"].Value.Equals("Made in USA"))
{
node.Attributes["Description"].Value ="Made in HongKong";
}
}
//要想使对xml文件所做的修改生效,必须执行以下Save方法
myXmlDoc.Save(xmlFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
privatestaticvoid AddXmlInformation(string xmlFilePath)
{
try
{
XmlDocument myXmlDoc =new XmlDocument();
myXmlDoc.Load(xmlFilePath);
//添加一个带有属性的节点信息
foreach (XmlNode node in myXmlDoc.FirstChild.ChildNodes)
{
XmlElement newElement = myXmlDoc.CreateElement("color");
newElement.InnerText ="black";
newElement.SetAttribute("IsMixed", "Yes");
node.AppendChild(newElement);
}
//保存更改
myXmlDoc.Save(xmlFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
privatestaticvoid DeleteXmlInformation(string xmlFilePath)
{
try
{
XmlDocument myXmlDoc =new XmlDocument();
myXmlDoc.Load(xmlFilePath);
foreach (XmlNode node in myXmlDoc.FirstChild.ChildNodes)
{
//记录该节点下的最后一个子节点(简称:最后子节点)
XmlNode lastNode = node.LastChild;
//删除最后子节点下的左右子节点
lastNode.RemoveAll();
//删除最后子节点
node.RemoveChild(lastNode);
}
//保存对xml文件所做的修改
myXmlDoc.Save(xmlFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}
上面的这个例子,首先是通过GenerateXMLFile方法在E盘创建出了我们预想的xml文件;然后通过GetXMLInformation方法对刚刚生成的xml文件进行了信息的读取;
之后通过ModifyXmlInformation方法对xml文件信息作出相应的修改(<Computer ID="" Description="Made in USA">
修改成为<Computer ID="" Description="Made in HongKong">);再之后通过AddXmlInformation方法向xml文件中添加了一个带有属性值的color节点;
最后通过DeleteXmlInformation方法将刚刚添加上的color节点删除掉。至此完成了对xml文件的基本操作:创建、读取、修改、添加、删除。
【注:想要将对xml文件所做的任何修改生效的话,必须调用Save方法,否则我们所做的修改不会保存】
【注:我们在创建节点的时候用的是XmlElement,但是读取节点信息的时候却用的是XmlNode,这里强调一点:XmlElement是XmlNode的继承,可以调用更多的方法
实现相应所需的功能】
最后简单集中的总结一下对xml进行操作的基本方法,如下所示:
//所需要添加的命名空间
using System.Xml;
//初始化一个xml实例
XmlDocument xml=new XmlDocument();
//导入指定xml文件
xml.Load(“xml文件路径path”);
//指定一个节点
XmlNode root=xml.SelectSingleNode("节点名称");
//获取节点下所有直接子节点
XmlNodeList childlist=root.ChildNodes;
//判断该节点下是否有子节点
root.HasChildNodes;
//获取同名同级节点集合
XmlNodeList nodelist=xml.SelectNodes("节点名称");
//生成一个新节点
XmlElement node=xml.CreateElement("节点名称");
//将节点加到指定节点下,作为其子节点
root.AppendChild(node);
//将节点加到指定节点下某个子节点前
root.InsertBefore(node,root.ChildeNodes[i]);
//为指定节点的新建属性并赋值
node.SetAttribute("id","");
//为指定节点添加子节点
root.AppendChild(node);
//获取指定节点的指定属性值
string id=node.Attributes["id"].Value;
//获取指定节点中的文本
string content=node.InnerText;
//保存XML文件
xml.Save(“xml文件存储的路径path”);
【注:因为我们要使用xml相关的语法和方法,所以一定要引入命名空间 System.Xml】
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace OperateXML
{
class Program
{
static void Main(string[] args)
{
try
{
//xml文件存储路径
string myXMLFilePath ="E:\\MyComputers.xml";
//生成xml文件
GenerateXMLFile(myXMLFilePath);
//遍历xml文件的信息
GetXMLInformation(myXMLFilePath);
//修改xml文件的信息
ModifyXmlInformation(myXMLFilePath);
//向xml文件添加节点信息
AddXmlInformation(myXMLFilePath);
//删除指定节点信息
DeleteXmlInformation(myXMLFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
private static void GenerateXMLFile(string xmlFilePath)
{
try
{
//初始化一个xml实例
XmlDocument myXmlDoc =new XmlDocument();
//创建xml的根节点
XmlElement rootElement = myXmlDoc.CreateElement("Computers");
//将根节点加入到xml文件中(AppendChild)
myXmlDoc.AppendChild(rootElement);
//初始化第一层的第一个子节点
XmlElement firstLevelElement = myXmlDoc.CreateElement("Computer");
//填充第一层的第一个子节点的属性值(SetAttribute)
firstLevelElement.SetAttribute("ID", "");
firstLevelElement.SetAttribute("Description", "Made in China");
//将第一层的第一个子节点加入到根节点下
rootElement.AppendChild(firstLevelElement);
//初始化第二层的第一个子节点
XmlElement secondLevelElement = myXmlDoc.CreateElement("name");
//填充第二层的第一个子节点的值(InnerText)
secondLevelElement.InnerText ="Lenovo";
firstLevelElement.AppendChild(secondLevelElement);
XmlElement secondLevelElement = myXmlDoc.CreateElement("price");
secondLevelElement.InnerText ="";
firstLevelElement.AppendChild(secondLevelElement);
XmlElement firstLevelElement = myXmlDoc.CreateElement("Computer");
firstLevelElement.SetAttribute("ID", "");
firstLevelElement.SetAttribute("Description", "Made in USA");
rootElement.AppendChild(firstLevelElement);
XmlElement secondLevelElement = myXmlDoc.CreateElement("name");
secondLevelElement.InnerText ="IBM";
firstLevelElement.AppendChild(secondLevelElement);
XmlElement secondLevelElement = myXmlDoc.CreateElement("price");
secondLevelElement.InnerText ="";
firstLevelElement.AppendChild(secondLevelElement);
//将xml文件保存到指定的路径下
myXmlDoc.Save(xmlFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
privatestaticvoid GetXMLInformation(string xmlFilePath)
{
try
{
//初始化一个xml实例
XmlDocument myXmlDoc =new XmlDocument();
//加载xml文件(参数为xml文件的路径)
myXmlDoc.Load(xmlFilePath);
//获得第一个姓名匹配的节点(SelectSingleNode):此xml文件的根节点
XmlNode rootNode = myXmlDoc.SelectSingleNode("Computers");
//分别获得该节点的InnerXml和OuterXml信息
string innerXmlInfo = rootNode.InnerXml.ToString();
string outerXmlInfo = rootNode.OuterXml.ToString();
//获得该节点的子节点(即:该节点的第一层子节点)
XmlNodeList firstLevelNodeList = rootNode.ChildNodes;
foreach (XmlNode node in firstLevelNodeList)
{
//获得该节点的属性集合
XmlAttributeCollection attributeCol = node.Attributes;
foreach (XmlAttribute attri in attributeCol)
{
//获取属性名称与属性值
string name = attri.Name;
string value = attri.Value;
Console.WriteLine("{} = {}", name, value);
}
//判断此节点是否还有子节点
if (node.HasChildNodes)
{
//获取该节点的第一个子节点
XmlNode secondLevelNode = node.FirstChild;
//获取该节点的名字
string name = secondLevelNode.Name;
//获取该节点的值(即:InnerText)
string innerText = secondLevelNode.InnerText;
Console.WriteLine("{} = {}", name, innerText);
//获取该节点的第二个子节点(用数组下标获取)
XmlNode secondLevelNode = node.ChildNodes[];
name = secondLevelNode.Name;
innerText = secondLevelNode.InnerText;
Console.WriteLine("{} = {}", name, innerText);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
privatestaticvoid ModifyXmlInformation(string xmlFilePath)
{
try
{
XmlDocument myXmlDoc =new XmlDocument();
myXmlDoc.Load(xmlFilePath);
XmlNode rootNode = myXmlDoc.FirstChild;
XmlNodeList firstLevelNodeList = rootNode.ChildNodes;
foreach (XmlNode node in firstLevelNodeList)
{
//修改此节点的属性值
if (node.Attributes["Description"].Value.Equals("Made in USA"))
{
node.Attributes["Description"].Value ="Made in HongKong";
}
}
//要想使对xml文件所做的修改生效,必须执行以下Save方法
myXmlDoc.Save(xmlFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
privatestaticvoid AddXmlInformation(string xmlFilePath)
{
try
{
XmlDocument myXmlDoc =new XmlDocument();
myXmlDoc.Load(xmlFilePath);
//添加一个带有属性的节点信息
foreach (XmlNode node in myXmlDoc.FirstChild.ChildNodes)
{
XmlElement newElement = myXmlDoc.CreateElement("color");
newElement.InnerText ="black";
newElement.SetAttribute("IsMixed", "Yes");
node.AppendChild(newElement);
}
//保存更改
myXmlDoc.Save(xmlFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
privatestaticvoid DeleteXmlInformation(string xmlFilePath)
{
try
{
XmlDocument myXmlDoc =new XmlDocument();
myXmlDoc.Load(xmlFilePath);
foreach (XmlNode node in myXmlDoc.FirstChild.ChildNodes)
{
//记录该节点下的最后一个子节点(简称:最后子节点)
XmlNode lastNode = node.LastChild;
//删除最后子节点下的左右子节点
lastNode.RemoveAll();
//删除最后子节点
node.RemoveChild(lastNode);
}
//保存对xml文件所做的修改
myXmlDoc.Save(xmlFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}
上面的这个例子,首先是通过GenerateXMLFile方法在E盘创建出了我们预想的xml文件;然后通过GetXMLInformation方法对刚刚生成的xml文件进行了信息的读取;
之后通过ModifyXmlInformation方法对xml文件信息作出相应的修改(<Computer ID="" Description="Made in USA">
修改成为<Computer ID="" Description="Made in HongKong">);再之后通过AddXmlInformation方法向xml文件中添加了一个带有属性值的color节点;
最后通过DeleteXmlInformation方法将刚刚添加上的color节点删除掉。至此完成了对xml文件的基本操作:创建、读取、修改、添加、删除。
【注:想要将对xml文件所做的任何修改生效的话,必须调用Save方法,否则我们所做的修改不会保存】
【注:我们在创建节点的时候用的是XmlElement,但是读取节点信息的时候却用的是XmlNode,这里强调一点:XmlElement是XmlNode的继承,可以调用更多的方法
实现相应所需的功能】
最后简单集中的总结一下对xml进行操作的基本方法,如下所示:
//所需要添加的命名空间
using System.Xml;
//初始化一个xml实例
XmlDocument xml=new XmlDocument();
//导入指定xml文件
xml.Load(“xml文件路径path”);
//指定一个节点
XmlNode root=xml.SelectSingleNode("节点名称");
//获取节点下所有直接子节点
XmlNodeList childlist=root.ChildNodes;
//判断该节点下是否有子节点
root.HasChildNodes;
//获取同名同级节点集合
XmlNodeList nodelist=xml.SelectNodes("节点名称");
//生成一个新节点
XmlElement node=xml.CreateElement("节点名称");
//将节点加到指定节点下,作为其子节点
root.AppendChild(node);
//将节点加到指定节点下某个子节点前
root.InsertBefore(node,root.ChildeNodes[i]);
//为指定节点的新建属性并赋值
node.SetAttribute("id","");
//为指定节点添加子节点
root.AppendChild(node);
//获取指定节点的指定属性值
string id=node.Attributes["id"].Value;
//获取指定节点中的文本
string content=node.InnerText;
//保存XML文件
xml.Save(“xml文件存储的路径path”);
相关文章推荐
- C#中如何创建xml文件 增、删、改、查 xml节点信息
- C#中如何创建xml文件 增、删、改、查 xml节点信息
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 实现对XML的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- C#使用Linq操作Xml文件(创建xml文件、增删改查xml文件节点信息)的方法
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- C# 实现对XML文件的基本操作(创建xml文件,增、删、改、查 xml节点信息)zz
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)zz
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)