gpt4 book ai didi

ms-word - 为 Word 2013 OpenXML 元素分配自定义唯一 ID

转载 作者:行者123 更新时间:2023-12-03 21:45:40 25 4
gpt4 key购买 nike

TLDR/问题

我怎样才能最好地为描述 Word 文档的 XML 中的(理想情况下的所有)元素分配唯一 ID,以便我可以从 Word (2013) 加载项中读取/写入这些唯一 ID?

此外,描述如何获得两个 Word 文档的良好差异的解决方案可能会有所帮助,但这不是主要问题。

背景

我正在使用 VSTO 为 Word (2013) 创建应用程序级加载项。我的部分任务涉及比较原始 Word 文档 W带有修改后的 W'这样我就可以处理另一个任务的差异。虽然 Word 显然具有差异/合并的能力(在 Word 2013 的“审查”面板中可用),但到目前为止我还没有找到一种以编程方式提取差异的方法。

因此,我计划获取文档的 XML(例如使用 Range.WordOpenXML )并对它们进行比较。有许多已发布的用于区分 XML 文档的算法(即 Diff(W.XML, W'.XML) ),其中差异的准确性在很大程度上取决于能否正确匹配来自两个文档的 XML 元素。

提出的解决方案及其问题

因此,我希望能够为 Word 文档的 XML 中的每个元素分配一个唯一的 ID,我可以从我的加载项中访问这些元素。在这种情况下,解决方案类似于将自定义命名空间导入名为 mynamespace 的包中。并添加属性 mynamespace:ID=***对于 DOCX 包中的每个元素。然后可以通过 Range.WordOpenXML 访问该属性。 .

但是,只需使用 mce:Ignorable、mce:ProcessContent 和 mce:PreserveAttributes,详见 http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2012/09/21/markup-compatibility-and-extensibility.aspx不起作用。修改后的 Word 文档加载没有任何问题,但是我似乎找不到任何属性,另外保存文档会删除所有添加的标记。

来自 http://openxmldeveloper.org/discussions/formats/f/13/p/8078/163573.aspx多年来,通过 Office Open XML 标准的标记兼容性和可扩展性 (MCE) 部分使用自定义 xml 的过程似乎变得复杂(专利问题等)。因此,我猜测我的问题出现是因为 Word 的 XML 处理器只是删除了它无法本地处理的所有标记(也许有一种方法可以连接到 Word 的 XML 处理器并为其提供自定义命令?)。

最佳答案

对于 future 的观众:

1)绝对没有办法为大多数元素设置任何类型的id,它可以在Word中存活(您可以使用任何自定义标签或属性,但MS Word打开文档后,它就消失了)

2) 只有两个元素可以用作 id - ContentControl,它们有 ids 和书签(可以在名称前添加下划线来制作隐藏书签,它只能从代码中使用),它们的名称可以是 id。

3) 如果在 Word 中启用了跟踪更改,则绝对可以使用 Range.WordOpenXML 并从中获取实际的 OpenXml 查看 XML 中的差异,如 here 所述。 , 例如。

关于ms-word - 为 Word 2013 OpenXML 元素分配自定义唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30859406/

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