XmlReader打开xml文件

本文关键字:文件 xml 打开 XmlReader | 更新日期: 2023-09-27 18:07:57

我有一个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行。显然阅读器仍然是打开的,我不知道如何在保存之前关闭阅读器。

XmlReader打开xml文件

我试过你的代码是正确的。然而你的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>