【问题标题】:Meaningful XML from MS Word Plugin来自 MS Word 插件的有意义的 XML
【发布时间】:2010-01-05 11:59:10
【问题描述】:

我需要构建一个 MS Word 2007 插件,该插件提供一个按钮,单击该按钮可将 Word 文档作为 XML 上传到 Web 服务。

到目前为止,这似乎并没有那么成问题,但客户还有一个额外的要求,即他们希望 XML 有意义。他们正在录制格式化文本,但希望将文档的某些区域包含在某些标签内,例如:

<WordDocument>
    <TagArea1>
        *word style xml for this bit of the document here*
    </TagArea1>
    <TagArea2>
        *word style xml for this bit of the document here*
    </TagArea2>
</WordDocument>

他们的理想是有模板,他们可以在上传时定义部分,创建这种 XML 样式。

使用 Word 而不是基于表单的技术的原因是保持格式一致很重要,并且能够选择出现分页符的位置等对他们来说至关重要。

我担心这种类型的功能可能无法实现,但我对在 Office 应用程序内部进行开发还很陌生,因此不胜感激。

【问题讨论】:

  • 要么你的解释不清楚,要么你的任务是不可能的。 (尽管您可以使用样式表重新设置文档的样式,将 Word 转换为某种内部 XML 格式,然后再转换回来。)
  • 您认为我的问题在哪里不清楚?告诉我,我会添加更多细节。

标签: xml ms-word semantics


【解决方案1】:

我会将其作为 docx(带有 xml + 资源的 zip 文件)上传并使用 System.IO.Packaging 对其进行操作。我知道您可以在 Word 中制作表格,但我不确定它在 docx xml 中是如何表示的。我首先在 Word 中创建一个表单,使用它,将其保存为 docx,然后拆开 XML 以查看其中的内容。

换句话说,我会使用已经存在的设施,而不是试图拼凑一些东西。

【讨论】:

  • 替代保存的 docx 包的另一个选项也可以是使用所谓的 Flat-OPC 格式(请参阅 blogs.msdn.com/ericwhite/archive/2008/09/29/…)。这是例如可从ActiveDocument.WordOpenXML 属性获得,也可用于开发自定义文件导出过滤器时使用的格式(请参阅msdn.microsoft.com/en-us/library/dd300649.aspx)。平面 OPC 格式的优点是您无需在将文档上传到 Web 服务之前保存文档的本地副本,并且您可以更轻松地进行修改,例如通过应用 XSLT。
  • 这听起来可能是一个更简单的解决方案。
【解决方案2】:

您可以尝试使用链接到您自己的 XML 部分的内容控件 (sdts)。不过要避免 i4i 专利混乱。见Gray Knowlton post

【讨论】:

  • +1 内容控件是根据这种特定情况构建的,可能是最佳选择。
猜你喜欢
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-05
  • 1970-01-01
相关资源
最近更新 更多