保存并覆盖 CustomXMLParts
Save and overwrite CustomXMLParts
我有一些方法可以读取序列化对象并将其写入 PowerPoint 文档的 CustomXMLPart。
目前,如果我对对象进行更改并将其写回 XMLPart,它会创建一个新的 XMLPart。有没有办法覆盖现有的 XMLPart?还是我必须删除现有的然后添加新的?
读取方法:
private void Application_AfterPresentationOpen(PowerPoint.Presentation presentation)
{
Office.CustomXMLParts settingsXmlParts = presentation.CustomXMLParts.SelectByNamespace("Document.Settings");
if (settingsXmlParts.Count <= 0)
{
return;
}
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Settings));
using StringReader streamReader = new StringReader(settingsXmlParts[1].XML);
_ = (Settings)xmlSerializer.Deserialize(streamReader);
}
写入方法:
private void Application_PresentationBeforeSave(PowerPoint.Presentation presentation, ref bool cancel)
{
if (!ResultsAreLoaded)
{
return;
}
Settings settings = new Settings();
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Settings));
using StringWriter stringWriter = new StringWriter();
xmlSerializer.Serialize(stringWriter, settings);
_ = presentation.CustomXMLParts.Add(stringWriter.ToString(), missing);
}
在添加新的之前简单地删除现有的,不知道有什么方法可以真正覆盖它,我就是这样做的。
Office.CustomXMLParts settingsXmlParts = presentation.CustomXMLParts.SelectByNamespace("Document.Settings");
foreach (var settingsXmlPart in settingsXmlParts)
settingsXmlPart.Delete();
或者
Office.CustomXMLPart settingsXmlPart = presentation.CustomXMLParts.SelectByNamespace("Document.Settings").FirstOrDefault();
if (settingsXmlPart != null)
settingsXmlPart.Delete();
我有一些方法可以读取序列化对象并将其写入 PowerPoint 文档的 CustomXMLPart。 目前,如果我对对象进行更改并将其写回 XMLPart,它会创建一个新的 XMLPart。有没有办法覆盖现有的 XMLPart?还是我必须删除现有的然后添加新的?
读取方法:
private void Application_AfterPresentationOpen(PowerPoint.Presentation presentation)
{
Office.CustomXMLParts settingsXmlParts = presentation.CustomXMLParts.SelectByNamespace("Document.Settings");
if (settingsXmlParts.Count <= 0)
{
return;
}
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Settings));
using StringReader streamReader = new StringReader(settingsXmlParts[1].XML);
_ = (Settings)xmlSerializer.Deserialize(streamReader);
}
写入方法:
private void Application_PresentationBeforeSave(PowerPoint.Presentation presentation, ref bool cancel)
{
if (!ResultsAreLoaded)
{
return;
}
Settings settings = new Settings();
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Settings));
using StringWriter stringWriter = new StringWriter();
xmlSerializer.Serialize(stringWriter, settings);
_ = presentation.CustomXMLParts.Add(stringWriter.ToString(), missing);
}
在添加新的之前简单地删除现有的,不知道有什么方法可以真正覆盖它,我就是这样做的。
Office.CustomXMLParts settingsXmlParts = presentation.CustomXMLParts.SelectByNamespace("Document.Settings");
foreach (var settingsXmlPart in settingsXmlParts)
settingsXmlPart.Delete();
或者
Office.CustomXMLPart settingsXmlPart = presentation.CustomXMLParts.SelectByNamespace("Document.Settings").FirstOrDefault();
if (settingsXmlPart != null)
settingsXmlPart.Delete();