您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业财务 > C操作XML方法集合
C#操作XML方法集合一前言先来了解下操作XML所涉及到的几个类及之间的关系如果大家发现少写了一些常用的方法,麻烦在评论中指出,我一定会补上的!谢谢大家*1XMLElement主要是针对节点的一些属性进行操作*2XMLDocument主要是针对节点的CUID操作*3XMLNode为抽象类,做为以上两类的基类,提供一些操作节点的方法清楚了以上的关系在操作XML时会更清晰一点二具体操作(C#)以下会对Xml的结点与属性做增删改查的操作也满足了实际工作中的大部分情况先构造一棵XML树如下,其中也涉及到了写入xml文档的操作1publicvoidCreatXmlTree(stringxmlPath)2{3XElementxElement=newXElement(4newXElement(BookStore,5newXElement(Book,6newXElement(Name,C#入门,newXAttribute(BookName,C#)),7newXElement(Author,Martin,newXAttribute(Name,Martin)),8newXElement(Adress,上海),9newXElement(Date,DateTime.Now.ToString(yyyy-MM-dd))10),11newXElement(Book,12newXElement(Name,WCF入门,newXAttribute(BookName,WCF)),13newXElement(Author,Mary,newXAttribute(Name,Mary)),14newXElement(Adress,北京),15newXElement(Date,DateTime.Now.ToString(yyyy-MM-dd))16)17)18);1920//需要指定编码格式,否则在读取时会抛:根级别上的数据无效。第1行位置1异常21XmlWriterSettingssettings=newXmlWriterSettings();22settings.Encoding=newUTF8Encoding(false);23settings.Indent=true;24XmlWriterxw=XmlWriter.Create(xmlPath,settings);25xElement.Save(xw);26//写入文件27xw.Flush();28xw.Close();29}然后得到如下的XML树1?xmlversion=1.0encoding=utf-8?2BookStore3Book4NameBookName=C#C#入门/Name5AuthorName=MartinMartin/Author6Date2013-10-11/Date7Adress上海/Adress8Date2013-10-11/Date9/Book10Book11NameBookName=WCFWCF入门/Name12AuthorName=MaryMary/Author13Adress北京/Adress14Date2013-10-11/Date15/Book16/BookStore以下操作都是对生成的XML树进行操作2.1新增节点与属性新增节点NewBook并增加属性Name=WPF1publicvoidCreate(stringxmlPath)2{3XmlDocumentxmlDoc=newXmlDocument();4xmlDoc.Load(xmlPath);56varroot=xmlDoc.DocumentElement;//取到根结点7XmlNodenewNode=xmlDoc.CreateNode(element,NewBook,);8newNode.InnerText=WPF;910//添加为根元素的第一层子结点11root.AppendChild(newNode);12xmlDoc.Save(xmlPath);13}开篇有写操作xml节点属性主要用XmlElement对象所以取到结点后要转类型1//属性2publicvoidCreateAttribute(stringxmlPath)3{4XmlDocumentxmlDoc=newXmlDocument();5xmlDoc.Load(xmlPath);6varroot=xmlDoc.DocumentElement;//取到根结点7XmlElementnode=(XmlElement)xmlDoc.SelectSingleNode(BookStore/NewBook);8node.SetAttribute(Name,WPF);9xmlDoc.Save(xmlPath);1011}效果如下2.2删除节点与属性1publicvoidDelete(stringxmlPath)2{3XmlDocumentxmlDoc=newXmlDocument();4xmlDoc.Load(xmlPath);5varroot=xmlDoc.DocumentElement;//取到根结点67varelement=xmlDoc.SelectSingleNode(BookStore/NewBook);8root.RemoveChild(element);9xmlDoc.Save(xmlPath);10}删除属性1publicvoidDeleteAttribute(stringxmlPath)2{3XmlDocumentxmlDoc=newXmlDocument();4xmlDoc.Load(xmlPath);5XmlElementnode=(XmlElement)xmlDoc.SelectSingleNode(BookStore/NewBook);6//移除指定属性7node.RemoveAttribute(Name);8//移除当前节点所有属性,不包括默认属性9//node.RemoveAllAttributes();10xmlDoc.Save(xmlPath);11}2.3修改节点与属性xml的节点默认是不允许修改的,本文也就不做处理了修改属性代码如下1publicvoidModifyAttribute(stringxmlPath)2{3XmlDocumentxmlDoc=newXmlDocument();4xmlDoc.Load(xmlPath);5XmlElementelement=(XmlElement)xmlDoc.SelectSingleNode(BookStore/NewBook);6element.SetAttribute(Name,Zhang);7xmlDoc.Save(xmlPath);8}效果如下2.4获取节点与属性1publicvoidSelect(stringxmlPath)2{3XmlDocumentxmlDoc=newXmlDocument();4xmlDoc.Load(xmlPath);5//取根结点6varroot=xmlDoc.DocumentElement;//取到根结点7//取指定的单个结点8XmlNodeoldChild=xmlDoc.SelectSingleNode(BookStore/NewBook);910//取指定的结点的集合11XmlNodeListnodes=xmlDoc.SelectNodes(BookStore/NewBook);1213//取到所有的xml结点14XmlNodeListnodelist=xmlDoc.GetElementsByTagName(*);15}属性1publicvoidSelectAttribute(stringxmlPath)2{3XmlDocumentxmlDoc=newXmlDocument();4xmlDoc.Load(xmlPath);5XmlElementelement=(XmlElement)xmlDoc.SelectSingleNode(BookStore/NewBook);6stringname=element.GetAttribute(Name);7Console.WriteLine(name);8}三具体操作(linqtoXML)LinqtoXml也没什么变化只操作对象改变了主要涉及的几个对象如下注:我并没有用linq的语法去操作元素。XDocument:用于创建一个XML实例文档XElement:用于一些节点与节点属性的基本操作以下是对Xml的一些简单的操作3.1新增节点与属性1publicvoidCreate(stringxmlPath)2{3XDocumentxDoc=XDocument.Load(xmlPath);4XElementxElement=xDoc.Element(BookStore);5xElement.Add(newXElement(Test,newXAttribute(Name,Zery)));6xDoc.Save(xmlPath);7}属性1publicvoidCreateAttribute(stringxmlPath)2{3XDocumentxDoc=XDocument.Load(xmlPath);4IEnumerableXElementxElement=xDoc.Element(BookStore).Elements(Book);5foreach(varelementinxElement)6{7element.SetAttributeValue(Name,Zery);8}9xDoc.Save(xmlPath);10}3.2删除节点与属性1publicvoidDelete(stringxmlPath)2{3XDocumentxDoc=XDocument.Load(xmlPath);4XElementelement=(XElement)xDoc.Element(BookStore).Element(Book);5element.Remove();6xDoc.Save(xmlPath);7}属性1publicvoidDeleteAttribute(stringxmlPath)2{3XDocumentxDoc=XDocument.Load(xmlPath);4//不能跨级取节点5XElementelement=xDoc.Element(BookStore).Element(Book).Element(Name);6element.Attribute(BookName).Remove();7xDoc.Save(xmlPath);8}3.3修改节点属性节点.net没提供修改的方法本文也不做处理修改属性与新增实质是同一个方法1publicvoidModifyAttribute(stringxmlPath)2{3XDocumentxDoc=XDocument.Load(xmlPath);4XElementelement=xDoc.Element(BookStore).Element(Book);5element.SetAttributeValue(BookName,ZeryTest);6xDoc.Save(xmlPath);7}
本文标题:C操作XML方法集合
链接地址:https://www.777doc.com/doc-2908555 .html