c#对xml的操作

在介绍之前,先了解xml技术用于解决什么问题:

xml语言出现的根本目标在于描述现实生活中经常出现的有关系的数据。比如说:(书架 书  作者 价格)(动物,哺乳动物,猫)这类的数据。
xml的语法跟html类似,不过xml没有只带的标签,它是让用户自己定义标签。
在xml技术里,可以编写一个文档来约束一个xml文档的书写规范,这称之为约束。它的出现就是为了防止用户胡乱定义标签。
常用的约束技术有
XML DTD
XML Schema

在应用程序中如何使用XML:

要想操作xml首先的加载到内存里。

XmlDocument document = new XmlDocument();
document.load("xml文件路径");

加载到内存后,就要对它执行一些操作了。

XmlElement element = document.DocumentElement;
//DocumentElement属性会返回一个XMLElement实例(表示根节点);

XmlElement的属性

FistChild:第一个子节点

ListChild:最后一个子节点

NextSibling:当前节点的下一个节点

HasChildNodes:是否有子节点

例子:

XmlDocument document = new XmlDocument();
XmlElement element;
 if (!File.Exists(xmlPath)){//判断是否有文件
XmlDeclaration doc = document.CreateXmlDeclaration("1.0", "utf-8", null);//新建xml头
       document.AppendChild(doc);//追加
       element = document.CreateElement("persons");新建根节点
       document.AppendChild(element);
}else{
document.Load(xmlPath);//加载xml文件
         element = document.DocumentElement;
        }
        XmlElement newPerson = document.CreateElement("person");
        newPerson.SetAttribute("userName", users.UserName); //设置属性
        newPerson.SetAttribute("phone", users.Phone);
        element.AppendChild(newPerson);
        document.Save(xmlPath);//保存文件
  

插入新节点:

XmlNode中有三个方法进行插入:AppendChild追加到后面,InsertAfter指定节点后面追加,InsertBefore指定节点前面追加

  XmlElement root = document.DocumentElement;
  XmlElement f1 = (XmlElement) root.FirstChild;

XmlElement newbook =  document.CreateElement("newbook");
XmlText title = document.CreateTextNode("aaa");//创建文本
newbook.AppendChild(title);//追加到节点上
f1.InsertAfter(newbook, f1.FirstChild.NextSibling); //追加到f1下面第一个节点的下一个节点的后面

删除节点:

RemoveAll 删除所有字节点。

RemoveChild 删除一个子节点

XMLDocument document = new XmlDocument();
document.Load(xmlPath);
XmlElement root = document.DocumentElement;
if(root.HasChildNodes){//删除前判断是否有此根节点,以免出错
  XmlNode book = root.LastChild;
  root.RemoveChild(book);
  document.Save(xmlPath);
}

选择节点:

选择节点是通过XPath查询语言来进行查询选择的

SelectSingNode 返回一个节点

SelectNodes 返回一个节点集合

遍历:

XmlNodeList node = root.SelectNodes("//author");
foreach (XmlElement element in node)
{
Console.WriteLine(element.InnerText);
} 
原文地址:https://www.cnblogs.com/sjyzz/p/7641094.html