将XElements添加到现有xml文件中

本文关键字:xml 文件 XElements 添加 | 更新日期: 2023-09-27 18:01:23

我需要从xml中读取XElements并向现有xml添加新的XElements。首先,我从xml中获得XElements,然后我想将newXElements添加到XElements并更新现有的xml文件。然后我调用XmlWriter,我有一个异常:"进程不能访问文件,因为它正在被另一个进程使用"。错误在哪里?如何在流中添加xelement到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;
                            }
                        }
                    }
                }
            }
        }

将XElements添加到现有xml文件中

XElement有自己的load方法,就像它有自己的Save方法一样

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

我建议尝试一下,作为流式读取/写入XElement的替代方法。

关于你的错误,你是否逐步通过代码并确定它失败的地方?