小菜学习了一下vs操作xml。下面来总结一下。
首先引入命名空间,xml的命名空间。using System.Xml;
xml的对象
//1、创建一个XML文档对象
XmlDocument doc = new XmlDocument();
//2、创建第一行描述信息
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
//3、将创建的第一行数据添加到文档中
doc.AppendChild(dec);
//4、给文档添加根节点
XmlElement books = doc.CreateElement("Books");
//5、将根节点添加给文档对象
doc.AppendChild(books);
xml的根节点
对xml的操作首先要获得根节点
//XmlDocument doc = new XmlDocument();
//doc.Load("OrDER.xml");
xml的子节点的添加,删除
添加: XmlElement customerName = doc.CreateElement("CustomerName");
customerName.InnerXml = "刘洋";
order.AppendChild(customerName);
删除:
XmlElement root = doc.DocumentElement;
XmlNode xn = root.SelectSingleNode("/Users/user[@id='"+id+"']");
root.RemoveChild(xn);
xml的属性的添加删除
添加: XmlElement orderItem2 = doc.CreateElement("OrderItem");
orderItem2.SetAttribute("Name", "雨衣");
orderItem2.SetAttribute("Count", "1");
items.AppendChild(orderItem2);
删除 :可以利用xpath得到节点node
xn.Attributes.RemoveNamedItem("Count");
xml的节点的获得,属性的获得,文本值
XmlNodeList nList = root.ChildNodes;
//获得根节点下的所有信息,应该是已第一个字节点为单位
foreach (XmlNode item in nList)
{
person.Add(new Person() { ID = int.Parse(item.Attributes["id"].Value), Name = item["name"].InnerText, Age = Convert.ToInt32(item["age"].InnerText), Gender = Convert.ToChar(item["gender"].InnerText), Password = item["password"].InnerText });
}
xml中xpath的使用
XmlDocument doc = new XmlDocument();
doc.Load("order.xml");
//获得根节点
XmlElement order = doc.DocumentElement;
XmlNode xn = order.SelectSingleNode("/Order/Items/OrderItem[@Name='雨衣']");//相当于路径,并且子节点的属性Name=“雨衣”;
Console.WriteLine(xn.Attributes["Name"].Value);//属性的值,
xml中所有子节点中list循环
//首先加载xml
//list添加类
//绑定数据源
List<Person> person = new List<Person>();
XmlDocument doc = new XmlDocument();
doc.Load("haodongxi.xml");
XmlElement root = doc.DocumentElement;//获得根节点
XmlNodeList nList = root.ChildNodes;
//获得根节点下的所有信息,是以及第一个大的子字节点为单位
foreach (XmlNode item in nList)
{
person.Add(new Person() { ID = int.Parse(item.Attributes["id"].Value), Name = item["name"].InnerText, Age = Convert.ToInt32(item["age"].InnerText), Gender = Convert.ToChar(item["gender"].InnerText), Password = item["password"].InnerText });
}
对xml进行操作还需要保存。
doc.Save("order.xml");
Console.WriteLine("删除成功");
看一下xml文件。
<?xml version="1.0" encoding="utf-8"?>
<Users>
<user id="994">
<name>123</name>
<age>123</age>
<gender>女</gender>
<password>123</password>
</user>
<user id="360"> <!--id为属性-->
<name>甄志丙</name> <!--name为节点,甄志丙是节点的值-->
<password>haha</password>
<gender>女</gender>
<age>43</age>
</user>
<user id="123">
<name>汉子</name>
<password>123abc</password>
<age>18</age>
<gender>男</gender>
</user>
<user id="121212">
<name>新来哒</name>
<age>11</age>
<gender>男</gender>
<password>xinlada</password>
</user>
<user id="222">
<name>222</name>
<age>222</age>
<gender>男</gender>
<password>2222</password>
</user>
</Users>
对于xml操作的路径(xml所在的路径)。