1

我正在尝试使用 OpenXML SDL 2.0 在 Word 文档中构建特定元素的列表。我将打开一个模板并扫描 Word 模板中的所有“w:sdt”元素,这些元素将用作可用文档部分的列表。我将向用户显示此列表,以便他们可以选择所需的部分/元素以从模板文档构建文档的新版本/副本。

所以我的列表需要获取顺序元素编号(这由 DocumentBuilder 类使用)以及“w:alias”“val”或者可能用于显示的“w:tag”“val”选择选项给用户。

一旦用户查看了可用的模板 XML 部分/元素并做出选择,我将使用 DocumentBuilder 按序号将标识的部分添加到新文档中。

我已成功使用 DocumentBuilder 通过序列号显式识别文档元素以构建新文档。这很好用。

我知道我需要使用递归来遍历模板文档并将合格的元素添加到列表中。我只是对 C# 或 OpenXML SDK 还不够了解,无法确定通过针对所需 XML 部分/元素的模板文档进行递归的最优雅方式。

任何人都可以指出一个适用的示例来枚举 OpenXML 文档中的部件/元素列表吗?

4

1 回答 1

1

除非有性能方面的原因,否则您是否可以不使用 OpenXmlSdk 打开文档并执行 LINQ 查询来定位每个 SDT 元素?

类似于以下内容:

using(WordProcessingDocument doc = WordProcessingDocument.Open(byte[], false);){

     IEnumerable<SdtContent> sdtElements = doc.MainDocumentPart.Body.Descendants<SdtContent>();
     foreach(SdtContent el in sdtElements){
        // Collect content tag name/alias
        // Collect your sequential element number?
     }
}

我之前使用过这种方法并过滤掉外部元素来收集 SdtContent 元素列表。虽然我不确定你所说的顺序元素编号是什么意思?

于 2011-01-13T01:03:06.560 回答