gpt4 book ai didi

c# - 保存 xml 文档会导致文件损坏

转载 作者:太空宇宙 更新时间:2023-11-03 11:24:34 24 4
gpt4 key购买 nike

我有一个关于如何将 xmldoc 保存为 word 文件的问题。我想打开 word 文件,使用 xmldocument 类对底层 xml 结构进行一些操作,然后将其重新保存回 word 文件。这就是我目前正在做的事情:

using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(@"E:\HelloWorld.docx", true))
{
MainDocumentPart mainPart = wordDoc.MainDocumentPart;
var xmlDoc = new XmlDocument();
using (Stream partStream = part.GetStream())
using (XmlReader partXmlReader = XmlReader.Create(partStream))
xmlDoc.Load(partXmlReader);
//xml node manipulation here

xmlDoc.Save(@"E:\HelloWorld.docx");
}

但这会导致文档损坏。执行此功能的正确方法是什么?

最佳答案

OpenXML 文档不仅仅是一个 XML 文件(实际上,它是一个包含多个文件的 ZIP 存档,其中包括 XML 文件)。

您应该做的是修改您的 WordprocessingDocument 然后保存它(这在 using block 的末尾自动完成),而不是保存 XML 文件代表文档的一部分:

using (var wordDoc = WordprocessingDocument.Open(fileName, true))
{
MainDocumentPart mainPart = wordDoc.MainDocumentPart;

using (Stream partStream = mainPart.GetStream())
{
var xmlDoc = new XmlDocument();

using (XmlReader partXmlReader = XmlReader.Create(partStream))
xmlDoc.Load(partXmlReader);

//xml node manipulation here

partStream.Position = 0;

using (XmlWriter partXmlWriter = XmlWriter.Create(partStream))
xmlDoc.Save(partXmlWriter);
}
}

关于c# - 保存 xml 文档会导致文件损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9842376/

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