openxml 获取书签内的所有元素
时间: 2023-08-25 17:04:42 浏览: 117
要获取 OpenXML 文档中书签内的所有元素,可以使用 OpenXML SDK 提供的 API。以下是一个示例,展示如何使用 C# 获取书签内的所有段落和文本:
```csharp
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
public static List<OpenXmlElement> GetAllElementsInBookmark(WordprocessingDocument document, string bookmarkName)
{
List<OpenXmlElement> elements = new List<OpenXmlElement>();
BookmarkStart bookmarkStart = document.MainDocumentPart.Document.Body.Descendants<BookmarkStart>().FirstOrDefault(b => b.Name == bookmarkName);
BookmarkEnd bookmarkEnd = document.MainDocumentPart.Document.Body.Descendants<BookmarkEnd>().FirstOrDefault(b => b.Id == bookmarkStart.Id);
OpenXmlElement element = bookmarkStart.NextSibling();
while (element != null && element != bookmarkEnd)
{
elements.Add(element);
element = element.NextSibling();
}
return elements;
}
```
在这个示例中,我们首先使用 `Descendants<BookmarkStart>()` 方法获取文档中所有的书签开始标记,然后使用 `FirstOrDefault()` 方法找到指定名称的书签。接着,我们找到与书签开始标记相对应的书签结束标记,并使用 `NextSibling()` 方法获取书签内的下一个元素。最后,我们遍历所有书签内的元素,并将它们添加到一个列表中返回。
注意,这个示例假设书签是在文档的主体部分中定义的。如果书签在文档的页眉或页脚中定义,需要修改代码以查找正确的书签位置。
阅读全文