您的位置:首页 > 编程语言 > C#

c# 操作xml文件

2018-01-03 21:29 471 查看
xml操作


xml使用注意


xml文件头 <?xml version="1.0" encoding="utf-8" ?>
字符转义 <age><![CDATA[<18>]]></age>
xml严格区分大小写,只能有一个跟节点,属性值必须使用双引号


写入xml文件


XmlDocument形式
XmlDocument xml = new XmlDocument(); // 创建xml文档对象
xml.AppendChild(xml.CreateXmlDeclaration("1.0", "utf-8", null)); // 创建文件头
var student = xml.CreateElement("Student"); // 创建子节点
student.Attributes.Append(xml.CreateAttribute("id")).Value = 1.ToString(); // 创建属性
student.InnerText = "小红"; // 创建文本节点
xml.AppendChild(xml.CreateElement("Class").AppendChild(student)); // 创建根元素
xml.Save("test.xml"); // 保存xml
XDocument形式(linq to xml)
XDocument xd = new XDocument(); // 创建xml文本对象
xd.Declaration = new XDeclaration("1.0", "utf-8", null); // 添加文件头
var root = new XElement("Test"); // 添加根元素
var student = new XElement("Student");
student.SetAttributeValue("id", 1.ToString());
student.AddFirst(new XText("小明"));
root.Add(student);
xd.Add(root);
xd.Save("text.xml");


读取xml文件


XmlDocument形式
XmlDocument xd = new XmlDocument();
xd.Load("text.xml");
XmlElement root = xd.DocumentElement; // 读取根节点
XmlNodeList nodes = root.GetElementsByTagName("Student"); // 获取子节点
XDocument形式
XDocument xd = XDocument.Load("test.xml");
XElement root = xd.Root; // 读取根节点
IEnumerable nodes = root.Elements("Student");
IEnumerable nodes = xd.Root.Elements().Where(item => int.Parse(item.Attribute("id").Value) > 2);


XPath应用


Xpath写法
/persons/person 表示查找根节点persons下面的所有person子节点
//person 表示递归查找,相当于全文搜索
//person/Name 找所有person节点下面的Name节点
//person/* 找所有person下的所有子节点
//* 找所有节点
/persons/person[1] 找第一个person
/persons/person[last()] 找最后一个
//@id 查找属性节点
//person[@id] 找具有id的person节点
//Name[not(@*)] 找不包含属性的Name节点
//person[@id='1'] 找id是1的person节点
//person[normalize-space(@id)='1'] 找id是1的person节点(去掉id属性值空格之后的)
//*[count(person)=3] 找包含3个person的父节点
//*[starts-with(name(),'N')] 选择标签名以N开头的元素
//*[contains(name(),'a')] 选择标签名包含a的元素
//*[string-length(name()) = 3] 获取标签名的长度是3的元素
//Name | //Age 获取Name和Age节点
使用xpath方式 XmlNodeList nodes = xd.SelectNodes("//person[@id='1']");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: