【问题标题】:Correcting Powerpoint 2007 XML Errors更正 Powerpoint 2007 XML 错误
【发布时间】:2011-04-01 01:55:21
【问题描述】:

我目前正在编写一个进程,该进程使用 MSXML 库通过 VBScript 以编程方式从给定模板生成 Powerpoint 报告。我正在做的对 XML 的唯一操作是复制幻灯片、将数据插入 Excel 数据表以用于图表和几个标题文本文本替换。我正在测试 2 个在图表方面相同但在样式和布局上有所不同的模板。其中一个模板为我提供了一个工作输出 pptx 文件,而另一个在打开时显示此错误:

Powerpoint error

现在我想知道找到此错误原因的最佳/最简单方法是什么?我尝试在模板、输出和 Powerpoint 的更正输出之间区分 XML,但差异出现在许多不同文件的许多不同位置,这是一个非常漫长的过程。是否有任何检查/验证工具可以帮助我?我已经根据架构检查了 XML,但 XML 似乎是有效的。

我无法升级到 Microsoft 的 OpenXML SDK for .NET 等工具,并且该过程必须在我当前使用的 VBScript/MSXML 过程中实现。

【问题讨论】:

  • 此错误纯粹与无效的 XML 有关。如果您编辑您的回复以在您附加的有效和无效的区域中显示输出,那么应该很容易判断问题出在哪里。但是,听起来您正在做一些更改(Excel、复制幻灯片和更新文本)。我建议一次做一个来测试导致问题的更新,然后发布该代码/XML。
  • 不完全:我正在对两个输入演示进行完全相同相同的更改,因此仅显示我已更改的区域对我没有帮助
  • 好吧,如果您确认它们完全相同,那么唯一可能的答案是您在编写代码后手动损坏了文件,例如您打开将 .pptx 保存为 .zip 并手动添加/编辑/删除某些内容。如果您的代码没有这样做并且您说您的代码没有这样做,那是 only 损坏的方式。如果您愿意在假设您的假设可能错误的前提下解决此问题,我很乐意提供帮助 - 我非常非常精通 PresentationML 和 DrawingML。
  • 不,我的意思是我对两个文件所做的更改完全相同(即输入数据相同,而对数据表的更改完全相同)。不同之处在于原始文件,这似乎意味着一个文件中的某些内容与我所做的更改不兼容,尽管它适用于我尝试过的许多以前的示例。
  • @thegravytalker:对,我也是这么说的,但我想我说得不好。如果您正在编写完全相同的内容,但使用不同的模板,那么失败的模板将失败,因为您的 XML 对于它所期望的内容无效。这可能会发生 - 也许您正在写信给title,模板希望您写信给ctrTitle。建议是一步一步地执行您的步骤,找出导致无效 XML 的原因,然后发布该 XML 加上有效的等效项。然后我们就会知道是什么导致了错误。

标签: xml debugging powerpoint office-2007 presentationml


【解决方案1】:

对于 Open XML 文档的基本验证,您可以使用 Open XML SDK。请参阅这两个链接作为开始:

对于非 SDK 验证,主要是手动完成。 PowerPoint 中的大多数错误与:

  1. 幻灯片版式与 主幻灯片布局。
  2. 关系 ID (rId) 不 匹配。
  3. 中的条目不正确 [Content_Types].xml。

一种方法是在无效幻灯片上选择“修复”,然后用不同的名称保存修复过的幻灯片。然后,您可以使用DiffOPC 工具针对已修复的工具和有错误的工具运行,以尝试确定已修复的内容 - 这通常可以很好地表明最初的错误。

【讨论】:

  • 感谢您的输入,但我无法真正将此标记为答案,因为我最初的问题表明我无法使用 SDK。这是因为我无法使用最新的 .NET 编译器。我快速浏览了您的第一个链接,看起来与仅针对我已经使用 MSXML COM 库所做的架构验证 XML 的结果相同。
  • 据我所知,SDK 之外没有自动验证工具。对于不使用 SDK 的任何验证,都必须手动完成,如 cmets 中所述。这将需要逐步执行生成的代码,以确保它在插入/删除/编辑的上下文中是有效的 XML。
  • 是的,我同意你的观点。逐步完成我所做的每一个更改可能是唯一的选择,但这也是一个通用的编程解决方案。我希望有一个用于 PowerPoint 的特定 Office XML 工具,它实际上可以为我指出错误的方向,而不是 PowerPoint 在加载演示文稿时只是说“有错误”。奇怪的是,Word 2007 更进一步地报告了问题而 PowerPoint 没有。
  • 据我所知,在 SDK 之外不存在。但是有一些技巧。我已经在上面列出了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 2010-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
相关资源
最近更新 更多