XML文档操作总结

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

using System.Xml;

namespace SiteMap

{

    class Program

    {



        static void Main(string[] args)

        {



            string filePath="E:\\SiteMap";

            //List<string> CategoryCodes = RequestData.GetCategoryCodes();

            if (!Directory.Exists(filePath))

            {

                Directory.CreateDirectory(filePath);

            }



            CreateBigSiteMap(filePath);

            CreateCategorySiteMap(filePath);

            CreateFilesSiteMap(filePath);



        }



        static void CreateBigSiteMap(string filePath)

        {

            List<string> FileIDs = RequestData.GetFileIDs();

            int count = (FileIDs.Count % 30000 == 0) ? FileIDs.Count / 30000 : (FileIDs.Count / 30000 + 1);

            XmlDocument xmldoc = new XmlDocument();

            xmldoc.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8""?><sitemapindex></sitemapindex>");

            XmlElement rootElement = xmldoc.DocumentElement;



            for (int i = 0; i < count; i++)

            {

                if (i == 0)

                {

                    XmlNode rootNode = xmldoc.CreateNode("element", "sitemap", "");

                    XmlNode xmlnode = xmldoc.CreateNode("element", "loc", "");

                    xmlnode.InnerText = "http://xiazai.dichan.com/sitemap/sitemap_list.xml";

                    rootNode.AppendChild(xmlnode);

                    xmlnode = xmldoc.CreateNode("element", "lastmod", "");

                    xmlnode.InnerText = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

                    rootNode.AppendChild(xmlnode);

                    rootElement.AppendChild(rootNode);

                }

                else

                {

                    XmlNode rootNode = xmldoc.CreateNode("element", "sitemap", "");

                    XmlNode xmlnode = xmldoc.CreateNode("element", "loc", "");

                    xmlnode.InnerText = "http://xiazai.dichan.com/sitemap/files-"+i.ToString()+".xml";

                    rootNode.AppendChild(xmlnode);

                    xmlnode = xmldoc.CreateNode("element", "lastmod", "");

                    xmlnode.InnerText = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

                    rootNode.AppendChild(xmlnode);

                    rootElement.AppendChild(rootNode);

                }

            }

            XmlAttribute attr = xmldoc.CreateAttribute("xmlns");

            attr.Value = "http://www.sitemaps.org/schemas/sitemap/0.9";

            rootElement.Attributes.Append(attr);

            xmldoc.Save(filePath + "\\sitemap.xml");

            Console.WriteLine("文件XML生成完成!");



        

        }

        static void CreateFilesSiteMap(string filePath)

        {

            List<string> FileIDs = RequestData.GetFileIDs();

            int count = (FileIDs.Count % 30000 == 0) ? FileIDs.Count / 30000 : (FileIDs.Count / 30000 + 1);

            Random rd = new Random();

            float priorityvalue;



            int eachcount = 30000;

            for (int i = 0; i < count; i++)

            {

                XmlDocument xmldoc = new XmlDocument();

                xmldoc.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8""?><urlset></urlset>");

                XmlElement rootElement = xmldoc.DocumentElement;

                for (int j = eachcount * i; j < eachcount * (i + 1); j++)

                {

                    if (j > (FileIDs.Count - 1))

                    {

                        break;

                    }

                    XmlNode rootNode = xmldoc.CreateNode("element", "url", "");

                    XmlNode xmlnode = xmldoc.CreateNode("element", "loc", "");

                    xmlnode.InnerText = "http://xiazai.dichan.com/show-" + FileIDs[j].ToString() + ".html";

                    rootNode.AppendChild(xmlnode);

                    xmlnode = xmldoc.CreateNode("element", "changefreq", "");

                    xmlnode.InnerText = "mothly";

                    rootNode.AppendChild(xmlnode);

                    xmlnode = xmldoc.CreateNode("element", "priority", "");

                    priorityvalue = rd.Next(1, 10);

                    xmlnode.InnerText = (priorityvalue / 10).ToString("0.0");

                    rootNode.AppendChild(xmlnode);

                    rootElement.AppendChild(rootNode);

                }

                xmldoc.Save(filePath + "\\files-" + (i+1).ToString() + ".xml");

                Console.WriteLine("files-" + i.ToString() + "XML生成完成!");

            }

              

        }

        static void CreateCategorySiteMap(string filePath)

        {



            List<string> CategoryCodes = RequestData.GetCategoryCodes();

       

            XmlDocument xmldoc = new XmlDocument();

            xmldoc.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8""?><urlset></urlset>");

            XmlElement rootElement = xmldoc.DocumentElement;

            Random rd = new Random();

            float priorityvalue ;

            foreach (string category in CategoryCodes)

            {

                XmlNode rootNode = xmldoc.CreateNode("element", "url", "");

                XmlNode xmlnode = xmldoc.CreateNode("element", "loc", "");

                xmlnode.InnerText = "http://xiazai.dichan.com/list-" + category + ".html";

                rootNode.AppendChild(xmlnode);

                xmlnode = xmldoc.CreateNode("element", "changefreq", "");

                xmlnode.InnerText = "mothly";

                rootNode.AppendChild(xmlnode);

                xmlnode = xmldoc.CreateNode("element", "priority", "");

                priorityvalue = rd.Next(1, 10);



                xmlnode.InnerText = (priorityvalue / 10).ToString("0.0");

                rootNode.AppendChild(xmlnode);

                rootElement.AppendChild(rootNode);

            }



      

            xmldoc.Save(filePath + "\\sitemap_list.xml");

            Console.WriteLine("类别XML生成完成!");

        }

    }

}

你可能感兴趣的:(xml)