docx4j 中的 RangeFinder("CTBookmark", "CTMarkupRange") 是什么?

What is RangeFinder("CTBookmark", "CTMarkupRange") in docx4j?

在 docx4j 的 BookmarksReplaceWithText.java 示例中,我看到以下行。 RangeFinder 究竟做了什么?我找不到明确的描述。

RangeFinder rt = new RangeFinder("CTBookmark", "CTMarkupRange");

RangeFinder.java

它为您提供书签开始和结束对象的列表。

据我了解,RangeFinder 收集了 xml 文件中的所有书签起点和终点。 RangeFinder 需要与您要搜索的对象(可以是整个文档或段落或其他)一起放入 TraversalUtil 中:

RangeFinder rt = new RangeFinder("CTBookmark", "CTMarkupRange");
new TraversalUtil(paragraphs, rt);

完成后,您可以调用 rt.getStarts() 或 rt.getEnds() 来获取开始和结束书签位置的列表。我的意思是,如果您查看文档的 XML 文件,您会发现书签开始和书签结束,例如:

<w:bookmarkStart w:id="1" w:name="BookmarkName"/>
    <w:r>
        <w:t>bookmark</w:t>
    </w:r>
<w:bookmarkEnd w:id="1"/>

有了这个,您可以替换 BookmarksReplaceWithText.java 中描述的内容或任意数量的其他内容。