备份.net写入proj文件的代码

2015-05-22 16:10:26  访问(1318) 赞(0) 踩(0)


        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            XmlDocument xmlDoc = null;

            try
            {
                string fileName = @"C:\Projectes\eKing\2015\WindowsSeriveStudy\HW\HEW\HEW.csproj";
                FileInfo fi = new FileInfo(fileName);
                
                xmlDoc = new XmlDocument();
                xmlDoc.Load(fileName);

                // MessageBox.Show(xmlDoc.InnerXml);
                XmlNode xnProject = XmlNodeFind(xmlDoc.ChildNodes, "Project");

                if (xnProject == null)
                {
                    MessageBox.Show("没?有?D找¨°到ì?Project节¨2点ì?。?ê");
                    return;
                }

                XmlNode nResult = null;
                int findIndex = 0;

                foreach (XmlNode xn in xnProject.ChildNodes)
                {
                    if (xn == null)
                        continue;

                    if (xn.Name == "ItemGroup")
                    {
                        ++findIndex;
                        nResult = xn;

                        if (findIndex == 2)
                        {
                            break;
                        }
                    }
                }

                if (nResult == null)
                { 
                    MessageBox.Show("没?有?D找¨°到ì?ItemGroup节¨2点ì?。?ê");
                    return;
                }

                string newClassName = "Class" + DateTime.Now.ToString("HHmmss");
                string classValue =BlankClass(newClassName); 
                string classNameFullName = fi.Directory.FullName + "\\" + newClassName + ".cs";
                File.WriteAllText(classNameFullName, classValue, System.Text.Encoding.Unicode);


                string xmlUrl = "";
                // 命¨1名?空?间?使o1用??方¤?法¤?§:êo
// XmlNamespaceManager nsmgr = new XmlNamespaceManager(new XmlDocument().NameTable); //声|¨′明??一°?个?命¨1名?空?间?管¨1理¤¨a器??
//nsmgr.AddNamespace("ns", xmlUrl);//向¨°管¨1理¤¨a器??添?¨a加¨?一°?个?命¨1名?空?间?连¢?接¨?,ê?其?中Dns为a添?¨a加¨?命¨1名?空?间?的ì?名?称?,ê?xmlUrl为a命¨1名?空?间?的ì?链¢??接¨?。?ê两¢?个?参?数oy都?是o?string类¤¨¤型¨a。?ê
//jobNode.SelectSingleNode("ns:trigger/ns:cron", nsmgr)//使o1用??命¨1名?空?间?查¨|找¨°节¨2点ì?。?ê注á?é意°a其?中D的ì?ns和¨ansmgr

//其?实o|ì对?于?¨2你?的ì?问¨o题?a只?需¨¨要°a在¨2创???建?§要°a加¨?入¨?的ì?节¨2点ì?时o?à指?明??一°?个?xmlUrl就¨a可¨|以°?啦¤2:êo
//XmlElement jobElement = xmlDoc.CreateElement("job", xmlUrl);
//如¨?果?添?¨a加¨?的ì?命¨1名?空?间?和¨a所¨′在¨2命¨1名?控?件t一°?致?时o?à,ê?xmlns属o?性?会¨¢自á?动?¥隐°t藏?


                //创???建?§一°?个?<book>节¨2点ì?  
                // XmlElement xe1 = xmlDoc.CreateElement("Compile", "url", xmlDoc.DocumentElement.NamespaceURI);

                // 同a?父?节¨2点ì?的ì?xmlns //
                string namespaceUrl = "http://schemas.microsoft.com/developer/msbuild/2003";
                XmlElement xe1 = xmlDoc.CreateElement("Compile", namespaceUrl);

                //设|¨¨置?该?节¨2点ì?genre属o?性?  
                xe1.SetAttribute("Include", newClassName + ".cs");



                nResult.AppendChild(xe1);

                XmlAttribute xa = xe1.Attributes["xmlns"];

                if(xa!=null)
                    xe1.Attributes.Remove(xa);

                xmlDoc.Save(fi.FullName);

                MessageBox.Show("OK");
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }
            finally
            {
                if (xmlDoc != null)
                    xmlDoc = null;
            }

        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="newClassName"></param>
        /// <returns></returns>
        public string BlankClass(string newClassName)
        {
            return @"
using System;
using System.Collections.Generic;
using System.Text;

namespace HEW
{
    public class " + newClassName + @"
    {
        public " + newClassName + @"()
        {
        }

        public string c = """";
    }
}
";
        }

        /// <summary>
        /// 通a?§过yXML的ì?名?称?找¨°到ì?XML的ì?节¨2点ì?
        /// </summary>
        /// <param name="xnl"></param>
        /// <param name="theName"></param>
        /// <returns></returns>
        public XmlNode XmlNodeFind(XmlNodeList xnl,string theName)
        {
            XmlNode theResult = null;
            foreach (XmlNode xn in xnl)
            {
                if (xn.Name == theName)
                    return xn;

                theResult = XmlNodeFind(xn.ChildNodes, theName);

                if (theResult != null)
                    return theResult;
            }

            return null;
        }
    }


标签:备份.net写入proj文件的代码 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)
 
  ┈全部┈  
 
(显示默认分类)