C#使用Linq To XML讀取XML,Linq生成XML,Linq創建帶屬性或帶節點XML


using System;
using System.Linq;
using System.Xml.Linq;

namespace Sample2
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 寫文件一(生成節點性質的)
            XDocument xdoc = new XDocument();
            XElement Persons = new XElement("Persons");
            XElement Peorson1 = new XElement("Person"); //增加一個Person節點
            Peorson1.Add(new XElement("Name", "Tom"));//在ptom下再增加子節點
            Peorson1.Add(new XElement("Age", "18"));
            Persons.Add(Peorson1);
            XElement Person2 = new XElement("Person");
            Person2.Add(new XElement("Name", "Jack"));
            Person2.Add(new XElement("Age", "20"));
            Persons.Add(Person2);

            xdoc.Add(Persons);//把根元素添加到文檔中
            xdoc.Save("myXml1.xml");//保存

            Console.WriteLine("xml文件一生成成功!");
            Console.ReadLine();

            /* 生成myXml.xml內容如下  
             * 
                <?xml version="1.0" encoding="utf-8"?>
                <Persons>
                  <Person>
                    <Name>Tom</Name>
                    <Age>18</Age>
                  </Person>
                  <Person>
                    <Name>Jack</Name>
                    <Age>20</Age>
                  </Person>
                </Persons>
             */
            #endregion

            #region 讀XML 讀取節點格式的值
            XDocument xd = XDocument.Load("myXml1.xml");
            foreach (XElement item in xd.Root.Descendants("Person"))//得到每一個Person節點,得到這個節點再取他的Name的這個節點的值
            {
                Console.WriteLine("姓名:{0} 年齡:{1}", item.Element("Name").Value, item.Element("Age").Value);//Person的節點的下得節點為Name的
            }
            Console.ReadLine();
            #endregion

            #region 帶節點格式的XML查找數據
            var result = xd.Descendants("Person")
                 .Where(p => p.Element("Name").Value.ToLower().Equals("tom"))
                 .Select(p => new { name = p.Element("Name").Value, age = p.Element("Age").Value }).FirstOrDefault(); //若要篩選就用上這個語句  
            Console.WriteLine("姓名:{0} 年齡:{1}", result.name, result.age);
            Console.ReadLine();
            #endregion

            #region 寫文件二(生成屬性性質的)
            XDocument xdoc1 = new XDocument();
            XElement Pers = new XElement("Persons");
            XElement p1 = new XElement("Person");
            p1.Add(new XAttribute("Name", "tom"));//添加XAttribute就生成屬性
            p1.Add(new XAttribute("Age", "18"));
            Pers.Add(p1);

            XElement p2 = new XElement("Person");
            p2.Add(new XAttribute("Name", "jack"));
            p2.Add(new XAttribute("Age", "20"));
            Pers.Add(p2);

            xdoc1.Add(Pers);//把根元素添加到文檔中
            xdoc1.Save("myXml2.xml");//保存

            Console.WriteLine("xml文件二生成成功!");
            Console.ReadLine();

            /* 生成myXml.xml內容如下  
             * 
                <?xml version="1.0" encoding="utf-8"?>
                <Persons>
                  <Person Name="tom" Age="18" />
                  <Person Name="jack" Age="20" />
                </Persons>
             */
            #endregion

            #region 讀XML 讀取屬性格式的值
            XDocument xd1 = XDocument.Load("myXml2.xml");
            foreach (XElement item in xd1.Root.Descendants("Person"))//得到每一個Person節點,得到這個節點再取他的Name的這個節點的值
            {
                Console.WriteLine("姓名:{0} 年齡:{1}", item.Attribute("Name").Value, item.Attribute("Age").Value);//Person的節點的下得節點為Name的
            }
            Console.ReadLine();
            #endregion

            #region 帶屬性格式的XML查找數據
            var result1 = xd1.Descendants("Person")
                 .Where(p => p.Attribute("Name").Value.Equals("tom"))
                 .Select(p => new { name = p.Attribute("Name").Value, age = p.Attribute("Age").Value }).FirstOrDefault(); //若要篩選就用上這個語句  
            Console.WriteLine("姓名:{0} 年齡:{1}", result1.name, result1.age);
            Console.ReadLine();
            #endregion
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM