none
使用XMLDocument時發生NullReferenceException錯誤 RRS feed

  • 問題

  • 各位先進好,

    小弟最近在寫一支程式目的是組出XML檔案,但程式在編釋到下面這一行時會出現NullReferenceException錯誤,而xdoc是我用XmlDocument所new出來的一個物件,程式錯誤訊息出現"System.NullReferenceException 未處理   Message=並未將物件參考設定為物件的執行個體",能否麻煩各位指點一下是哪邊的問題,萬分感謝!!!
     

    程式碼如下:
    ====================================================================
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using System.Configuration;
    using System.Xml;
    using System.Web;

    namespace ProgramDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
                genXMLFiles();
            }

            static void genXMLFiles()
            {
                 // 建立一個 XmlDocument 物件並加入 Declaration
                    XmlDocument xdoc = new XmlDocument();
                    xdoc.AppendChild(xdoc.CreateXmlDeclaration("1.0", "UTF-8", "yes"));

                    // 建立根節點物件並加入 XmlDocument 中 (第 0 層)
                    XmlElement rootElement = xdoc.CreateElement("Employees");
                    xdoc.AppendChild(rootElement);

                    // 建立一個子元素, 並在這個子元素裡加上一個 attribute (第 1 層)
                    XmlElement eleChild1 = xdoc.CreateElement("Employee");
                    XmlAttribute attChild1 = xdoc.CreateAttribute("Department");
                    attChild1.Value = "研發部";
                    eleChild1.Attributes.Append(attChild1);
                    rootElement.AppendChild(eleChild1);

                    // 再為這個子元素加入一個孫元素 (第 2 層)
                    XmlElement eleGrandChild1 = xdoc.CreateElement("Name");
                    eleGrandChild1.InnerText= "吳大寶";
                    eleChild1.AppendChild(eleGrandChild1);

                    // 建立第二個子元素 (第 1 層)
                    XmlElement eleChild2 = xdoc.CreateElement("Employee");
                    XmlAttribute attChild2 = xdoc.CreateAttribute("Department");
                    attChild2.Value = "總務部";
                    eleChild2.Attributes.Append(attChild2);

                    // 建立第二個孫元素 (第 2 層)
                    XmlElement eleGrandChild2 = xdoc.CreateElement("Name");
                    eleGrandChild2.InnerText = "鄭小胖";
                    eleChild2.AppendChild(eleGrandChild2);
                    rootElement.AppendChild(eleChild2);

                    // 將建立的 XML 節點儲存為檔案
                    //xdoc.Save(MapPath("~/App_Data/Test01.xml"));
                    xdoc.Save(System.Web.HttpContext.Current.Server.MapPath("c:/Test01.xml"));
                    Console.WriteLine("XML created!");
                }

            //private static XmlWriter MapPath(string p)
            //{
            //    throw new NotImplementedException();

            //}
           
            }
        }
    =====================================================================

    2011年10月25日 下午 04:33

解答

  • 你是 Console Application,為什麼會出現 ASP.NET 的寫法:

    xdoc.Save(System.Web.HttpContext.Current.Server.MapPath("c:/Test01.xml")); 


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/studyazure
    • 已標示為解答 阿紫 2011年10月27日 上午 01:45
    2011年10月25日 下午 04:36
    版主

所有回覆

  • 你是 Console Application,為什麼會出現 ASP.NET 的寫法:

    xdoc.Save(System.Web.HttpContext.Current.Server.MapPath("c:/Test01.xml")); 


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/studyazure
    • 已標示為解答 阿紫 2011年10月27日 上午 01:45
    2011年10月25日 下午 04:36
    版主
  • 感謝版主大的回應

    修改後即可正常編輯,thanks a million!

    // 將建立的 XML 節點儲存為檔案
                    //xdoc.Save(MapPath("~/App_Data/Test01.xml"));
                    xdoc.Save("c:/Test01.xml");
                    Console.WriteLine("XML created!");

    2011年10月27日 上午 01:44