将XElements添加到存在的xml文件中

时间:2014-05-02 09:29:42

标签: c# xmlreader xmlwriter

我需要从xml中读取XElements并将新的XElements添加到exists xml中。我希望在xElements中添加newXElements并更新存在的xml文件后,我从xml获取XElements。然后我调用XmlWriter我有一个异常:"进程无法访问该文件,因为它正被另一个进程使用#34;。错误在哪里?如何将XElements附加到流中的xml?

IEnumerable<XElement> newXElements = GetNewXElements();
IEnumerable<XElement> xElements = GetXElements(path, "MyElement");

                using (XmlWriter xw = XmlWriter.Create(path, settings))
                {
// Write to xml code

}


 public static IEnumerable<XElement> GetXElements(string inputUrl, string elementName)
        {
            using (XmlReader reader = XmlReader.Create(inputUrl))
            {
                reader.MoveToContent();
                while (reader.Read())
                {
                    if (reader.NodeType == XmlNodeType.Element)
                    {
                        if (reader.Name == elementName)
                        {
                            XElement el = XNode.ReadFrom(reader) as XElement;
                            if (el != null)
                            {
                                yield return el;
                            }
                        }
                    }
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

XElement有自己的加载方法,就像它拥有自己的保存

一样
    XElement q = XElement.Load(path);
    q.save(Path);

我建议尝试将它们作为流式传输/写入XElement的替代方法。

关于您的错误,您是否已逐步完成代码并确定其失败的位置?