using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; using System.Xml.Linq; namespace XML基本操作 { class Program { static void Main(string[] args) { CreateXMLDocByDOM(); Console.WriteLine(); CreateXMLDocByLINQ(); Console.WriteLine(); Console.WriteLine("调用QueryAttributeElement方法输出结果:"); QueryAttributeElement("f1.xml"); Console.ReadKey(); } static void CreateXMLDocByDOM() { XmlDocument doc = new XmlDocument();//创建一个XML文档 XmlElement bookList = doc.CreateElement("BookList");//创建一个根节点BookList XmlElement book, auth; book = doc.CreateElement("Book"); book.SetAttribute("Name", "Book-1"); auth = doc.CreateElement("Author"); auth.InnerText = "Author-1"; book.AppendChild(auth); bookList.AppendChild(book); book = doc.CreateElement("Book"); book.SetAttribute("Name", "Book-2"); auth = doc.CreateElement("Author"); auth.InnerText = "Author-2"; book.AppendChild(auth); bookList.AppendChild(book); doc.AppendChild(bookList); doc.Save("f1.xml"); Console.WriteLine(doc.InnerXml);//输出到控制台 Console.WriteLine(); } static void CreateXMLDocByLINQ() { XElement bookList = new XElement("BookList", new XElement[] { new XElement("Book",new object[] { new XAttribute("Name","Book-1"), new XElement("Author","Author-1") }), new XElement("Book",new object[] { new XAttribute("Name","Book-2"), new XElement("Author","Author-2") }) }); File.WriteAllText("f2.xml", bookList.ToString()); Console.WriteLine(bookList);//输出到控制台 } static void QueryAttributeElement(string path) { XElement root = XElement.Load(path);//加载path的数据到内存 Console.WriteLine("查询所有Book节点:"); var userList = from ele in root.Elements("Book")//查询所有Book节点 select ele; foreach (var item in userList) { Console.WriteLine(item); } Console.WriteLine(); Console.WriteLine("查询所有Book节点的名字:"); var nameList = from ele in root.Elements("Book")//查询所有Book节点的名字 select ((XAttribute)ele.Attribute("Name")).Value; foreach (var item in nameList) { Console.Write(item + " , "); } } } }
LINQ to XML 的一系列操作和之前LINQ to DataTable 差不多,所以就不演示了。