【问题标题】:Add XElements to exists xml file将 XElements 添加到现有的 xml 文件
【发布时间】:2014-05-02 09:29:41
【问题描述】:

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

【问题讨论】:

    标签: c# xmlreader xmlwriter


    【解决方案1】:

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

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

    我建议尝试将这些作为流式读取/写入 XElement 的替代方法。

    关于您的错误,您是否逐步检查了代码并确定了哪里出错了?

    【讨论】:

    • DavidFletcher,我使用流读/写,因为我的 xml 文件超过 1 GB
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多