-
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']");