我有一个看起来像这样的XML文件:
<Paths>
<Path>
<Other stuff be here/>
</Path>
</Paths>
我想以编程方式添加一个新的&#34; Path&#34;在当前节点之后的节点,仍然在&#34;路径&#34;节点。这是我正在尝试的内容:
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);
我最终得到一个例外:
&#34;进程无法访问该文件,因为它正由另一个进程使用。&#34;
这发生在xmlDoc.Save
行。很明显,读者仍然是开放的,我无法弄清楚如何在保存前关闭阅读器。
答案 0 :(得分:0)
我试过你的代码是正确的。但是,您的XML不是,最终应该关闭<Paths>
元素而不是<Path>
<Paths>
<Path>
<!-- Other stuff be here -->
</Path>
</Paths>
还要确保该文件确实未在其他进程中使用。 您可以使用进程资源管理器工具找到它。 (http://windowsxp.mvps.org/processlock.htm)
结果XML:
<Paths>
<Path>
<!-- Other stuff be here -->
</Path>
<Path xmlns="Test" />
</Paths>