gpt4 book ai didi

c# - 为什么我的自定义 XML 在 Word 保存时不会转移到新版本的 DOCX 文件?

转载 作者:太空狗 更新时间:2023-10-29 20:28:47 25 4
gpt4 key购买 nike

我正在向 docx 添加一些自定义 XML,以便在我正在编写的应用程序中跟踪它。

我是通过 ZIP 库打开 Word 文档并通过官方 Open XML SDK 路径手动完成的。两者都有相同的结果,即我的 XML 被插入到文档中的 customXml 文件夹中。对于这两种方法,文档都可以在 Word 中正常打开,并且存在 XML。

但是当我将文档另存为 MyDoc2.docx 时,例如我所有的 XML 都消失了。

我做错了什么?

我一直关注的 Microsoft 链接:

http://msdn.microsoft.com/en-us/library/bb608597.aspx
http://msdn.microsoft.com/en-us/library/bb608612.aspx

以及我从 Open XML SDK 2.0 获取的代码:

public static void AddNewPart(string document, string fileName)
{
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(document, true))
{
MainDocumentPart mainPart = wordDoc.MainDocumentPart;

CustomXmlPart myXmlPart = mainPart.AddCustomXmlPart(CustomXmlPartType.CustomXml);

using (FileStream stream = new FileStream(fileName, FileMode.Open))
{
myXmlPart.FeedData(stream);
}
}
}

谢谢,约翰

最佳答案

好的,所以我设法找到了以下文章Using Custom XML Part as DataStore在 openxmldeveloper.org 上,删除了不必要的代码,以便插入和保留自定义 XML:

static void Main(string[] args)
{
using (WordprocessingDocument doc = WordprocessingDocument.Open("Test.docx", true, new OpenSettings()))
{
int customXmlPartsCount = doc.MainDocumentPart.GetPartsCountOfType<CustomXmlPart>();

if (customXmlPartsCount == 0)
{
CustomXmlPart customXmlPersonDataSourcePart = doc.MainDocumentPart.AddNewPart<CustomXmlPart>("application/xml", null);
using (FileStream stream = new FileStream("Test.xml", FileMode.Open))
{
customXmlPersonDataSourcePart.FeedData(stream);
}


CustomXmlPropertiesPart customXmlPersonPropertiesDataSourcePart = customXmlPersonDataSourcePart
.AddNewPart<CustomXmlPropertiesPart>("Rd3c4172d526e4b2384ade4b889302c76");

Ds.DataStoreItem dataStoreItem1 = new Ds.DataStoreItem() { ItemId = "{88e81a45-98c0-4d79-952a-e8203ce59aac}" };
customXmlPersonPropertiesDataSourcePart.DataStoreItem = dataStoreItem1;
}
}
}

因此,只要您不修改文件,Microsoft 的所有示例都可以使用。问题似乎是因为我们没有设置与主文档的关系。

关于c# - 为什么我的自定义 XML 在 Word 保存时不会转移到新版本的 DOCX 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6341845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com