2

这与我提出的另一个问题密切相关:Open XML SDK v2 中是否存在未公开的功能?

我目前正在手动处理 Open XML 文件。我最近查看了 SDK,惊讶地发现它看起来非常低级,实际上与我自己创建的帮助类非常相似。我的问题是,在使用 XML 库进行手动编码时,SDK v2 究竟会处理哪些您必须手动执行的操作?

例如,它会在删除 PowerPoint 幻灯片时自动修补 _rels 文件吗?

4

2 回答 2

3

除了 Otaku 的链接之外,还显示了一个使用 IO.Packaging 命名空间与 SDK 导航 OpenXML 文档的示例(接近底部)。

就像微软在 SDK 下载页面上所说的那样:

Microsoft Office 的 Open XML SDK 2.0 构建在 System.IO.Packaging API 之上,并提供强类型部件类来操作 Open XML 文档。SDK 还使用 .NET Framework 语言集成查询 (LINQ) 技术来提供对 Open XML 文档部分内的 XML 内容的强类型对象访问。

Open XML SDK 2.0 简化了操作 Open XML 包和包中的底层 Open XML 模式元素的任务。Open XML 应用程序编程接口 (API) 封装了开发人员在 Open XML 包上执行的许多常见任务,因此您只需几行代码即可执行复杂的操作。

我几乎只使用 SDK,但例如,很高兴能够通过以下方式从 Word 文档中获取表格:

Table table = wordprocessingDocument.MainDocumentPart.Document.Body.Elements<Table>().First();

(我的意思是,假设它是第一张桌子)

我想说,SDK 通过提供一种直观的基于对象的方式来处理文档,正是它想要做的事情。

至于自动修补关系——不,它不会那样做。回头看看你实际上是如何陈述这个问题的,我想我什至可能会说(而且我对 Open XML 还很陌生,所以这不是福音)SDK2.0 不一定提供任何额外的功能,它提供了一种更方便的方式来实现相同的功能。例如,当您删除一个元素时,您仍然需要了解这些关系,但处理它们要容易得多。

此外,在 SDK 之上还进行了一些努力以添加更多抽象——例如,参见 ExtremeML(仅限 Excel 库。我从未使用过它,但我认为它确实涉及修补关系等问题)。

所以如果我在这里啰嗦了一点,我很抱歉。但我想我的简短回答是:可能没有额外的功能,但有一个很好的抽象层次,使得实现某些功能更容易处理——如果你到目前为止一直在手工做,你会当然有对 OPC 的理解,以了解究竟是什么被抽象出来。

于 2010-07-27T19:40:52.113 回答
2

作为起点,请从 Brian Jones 和 Zeyad Rajabi 博客中阅读此内容。

我不知道并排比较,但以下文章/视频确实讨论了这两者:

最后,这是2.0 的新特性 - 可以假设 1.0 或手动编码都没有这些好处。

于 2010-07-25T16:01:13.890 回答