[英]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.