CustomXmlPart FeedData给出IOException'无法在“更新”模式下多次打开条目

问题描述

此问题是此相关问题的后续内容

Edit CustomXML with OpenXML C#

我有一个简单的代码片段来替换XmlNode的InnerText。但是,当我收到IOException时,我必须错误地管理我的Streams:“无法在Update模式下多次打开条目。”我已经做了大量的研究,但是它使我进入了讨论XML SDK内部工作的Git回购中,并且我认为我只是缺少一些基本知识。这是代码段:

        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            byte[] byteArray = File.ReadAllBytes(@"C:\Simple_Template_New.docx");

            using (MemoryStream stream = new MemoryStream())
            {
                stream.Write(byteArray,(int)byteArray.Length);
                WordprocessingDocument doc = WordprocessingDocument.Open(stream,true);

                CustomXmlPart xmlPart = doc.MainDocumentPart.CustomXmlParts.FirstOrDefault();
                XmlDocument xmlDocument = new XmlDocument();

                using (var inputStream = xmlPart.GetStream(FileMode.Open,FileAccess.ReadWrite))
                using (var outputStream = new MemoryStream())
                {
                    XmlNamespaceManager mgr = new XmlNamespaceManager(xmlDocument.NaMetable);
                    mgr.AddNamespace("ns","www.mydomain.com");

                    xmlDocument.Load(inputStream);
                    xmlDocument.SelectSingleNode("/ns:myxml/ns:PERSON/ns:NAMetaG",mgr).InnerText = "John Doe";

                    xmlDocument.Save(outputStream);
                    outputStream.Seek(0,SeekOrigin.Begin);
                    xmlPart.FeedData(outputStream);

                }

                doc.MainDocumentPart.Document.Save();
                doc.Close();

                File.WriteallBytes(@"C:\Simple_Template_Replace.docx",stream.ToArray());
            }
        }

该异常发生在xmlPart.FeedData(outputStream)行。它使我相信我要两次打开outputStream,但是唯一使用的其他实例是xmlDocument.Save(outputStream)行。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...