簡體   English   中英

在C#中從XML文件讀取值並寫入XML文件

[英]Reading the values from and Writing to the XML File in C#

我想在進行一些修改后從XML文件中讀取值,並將其寫入同一文件中。
注意:-不應從XML讀取注釋的值

Web.config:-

<add key="InputDataFileName" value="InputData.xml" /> 


這是我的代碼,

string inputxmlPath = AppDomain.CurrentDomain.BaseDirectory + ConfigurationManager.AppSettings["InputDataFileName"];
            XmlReaderSettings readerSettings = new XmlReaderSettings();
            readerSettings.IgnoreComments = true;
            XmlReader reader = XmlReader.Create(inputxmlPath, readerSettings);
            XmlDocument doc = new XmlDocument();
            doc.Load(reader);
            var ParentNode = doc.SelectSingleNode("//TestData"); //This is the root Node
            if (ParentNode.ChildNodes.Count > 0)
            {
                foreach (XmlNode child in ParentNode)
                {
                    string elementName = child.LocalName;
                    switch (elementName)
                    {
                        case "URL":
                            for (int i = 0; i < child.ChildNodes.Count; i++)
                            {
                                XmlNode node = child.ChildNodes[i].FirstChild;
                                node.InnerText = CMEURL;
                            }
                            break;
                        case "LoadBalanceList":
                            for (int i = 0; i < child.ChildNodes.Count; i++)
                            {
                                XmlNode node = child.ChildNodes[i].FirstChild;
                                node.InnerText = CMEURL;
                            }
                            break;
                        case "Activity":
                            for (int i = 0; i < child.ChildNodes.Count; i++)
                            {
                                XmlNode node = child.ChildNodes[i].FirstChild;
                                node.InnerText = CMEURL;
                            }
                            break;

                        default:
                            break;
                    }
                }
            }

            doc.Save(inputxmlPath); //Getting an exception here

異常:IOException未由用戶代碼處理該進程無法訪問文件'C:\\ Users \\ Desktop \\ Patching \\ source \\ Automation \\ InputData.xml',因為該文件正在被另一個進程使用。

Save方法中獲取異常
不確定我做錯了什么,有人可以幫我嗎
提前致謝

您永遠不會關閉XmlReader ,因此它仍然具有打開的文件句柄以供讀取-這意味着您無法寫入同一文件。 您應該將其放在using語句中:

var doc = new XmlDocument();
var settings = new XmlReaderSettings { IgnoreComments = true };
using (var reader = XmlReader.Create(inputXmlPath, settings))
{
    doc.Load(reader);
}

我個人將使用XDocument而不是XmlDocument

XDocument doc;
var settings = new XmlReaderSettings { IgnoreComments = true };
using (var reader = XmlReader.Create(inputxmlPath, settings))
{
    doc = XDocument.Load(reader);
}

在嘗試寫入文件之前,需要處理掉您的閱讀器:

XmlDocument doc = new XmlDocument();
using(var reader = XmlReader.Create(inputxmlPath, readerSettings))            
   doc.Load(reader);

現在您仍然可以打開閱讀器,因此閱讀器正在訪問文件,並且當您調用doc.Save()XmlDocument嘗試同時訪問文件。 using語句負責為您配置閱讀器,因此,當您調用Save()時,閱讀器不再使用該文件。 將資源與using語句一起使用始終是一個好主意,而不是手動關閉/處置資源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM