【发布时间】:2015-08-15 02:04:52
【问题描述】:
我有一个看起来有点像这样的 XML 文件:
<Paths>
<Path>
<Other stuff be here/>
</Path>
</Paths>
我想以编程方式在当前节点之后添加一个新的“路径”节点,但仍在“路径”节点内。这是我正在尝试的:
XmlDocument xmlDoc = new XmlDocument();
string xmlFilePath = "ThatFileFromAbove.xml";
using (XmlReader reader = XmlReader.Create(xmlFilePath))
xmlDoc.Load(reader);
XmlNode newPathNode = xmlDoc.CreateNode(XmlNodeType.Element, "Path", "Test");
xmlDoc.GetElementsByTagName("Paths")[0]
.InsertAfter(newPathNode, xmlDoc.GetElementsByTagName("Paths")[0].LastChild);
xmlDoc.Save(xmlFilePath);
我最终得到一个异常:
“该进程无法访问该文件,因为它正被另一个进程使用。”
这发生在xmlDoc.Save 行。显然阅读器仍处于打开状态,我无法弄清楚如何在保存之前关闭阅读器。
【问题讨论】:
-
你确定它没有被其他进程打开——例如创建它的进程吗?修复您的 XML 并使用记事本保存后,我无法重现您的错误。请注意,如果文件被另一个进程锁定以进行写入,它可能仍然可以打开以进行读取。