什么是Apache POI中的CTP和CTTbl类(对象)?

12

我正在尝试理解Apache POI的一些部分。例如,我正在尝试从现有的docx文件中获取文本(或表格等)。例如,在XWPFDocument中有一个方法getParagraph(..CTP p)

它返回“带有CTP类p的段落”。但是CTP类是什么?我已经查看了文档的xml结构,但没有找到类似的东西。因此,我不知道如何首先调用方法。同样在XWPFDocument中还有一个方法getTable(CTTbl CTTbl),它按其CTtbl-Object返回表格。

似乎每个ooxml文档内部的数据类型都有一个类似CP*的东西,所以我想了解如何使用它们。此外,从文档中得知,这些方法似乎是获取元素的唯一直接方法,而无需将它们放入集合中或猜测其位置。

1个回答

13

CTx类是XMLBeans包装器。它们是从发布的OOXML规范XML Schema文件自动生成的。

如果文件中的xml元素是p,则生成的OOXML的XMLBeans包装器将为CTP。如果是table,那么它将是CTTable。xml元素的命名空间会体现在类的包中,因此如果您有两个具有相同本地名称但具有不同命名空间的不同元素,那么您将能够确定您想要哪一个。

如果可以选择,请不要使用CT类。它们是低级别的,并且需要您了解底层文件格式的结构和格式。通常只在高级用例中才需要使用它们。

对于普通用例,几乎所有您想要做的事情都可以使用Apache POI用户模型包装类完成,如果可以,请仅使用这些类。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接