问题描述
此问题是此相关问题的后续内容:
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 (将#修改为@)