XmlReader打开xml文件?

时间:2015-08-15 02:04:52

标签: c# xml save

我有一个看起来像这样的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行。很明显,读者仍然是开放的,我无法弄清楚如何在保存前关闭阅读器。

1 个答案:

答案 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>