12

我正在尝试了解 Apache POI 的某些部分。例如,我试图从现有的docx文件中获取文本(或表格等)。例如,在 XWPFDocument 中有一个方法 getParagraph(..CTP p)
它返回“带有 CTP 类 p 的段落”。但什么是 CTP 类?我查看了文档的 xml 结构,但没有找到类似的东西。结果,我首先不知道如何调用方法。对于同一个 XWPFDocument,还有一个方法 getTable(CTTbl CTTbl),它返回“一个由其 CT​​tbl-Object 组成的表。

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

4

1 回答 1

12

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

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

如果您有选择,请不要使用 CT 课程。它们是低级的,需要您了解底层文件格式的结构和格式。它们通常仅在高级用例中需要。

使用 Apache POI 用户模型包装类几乎可以为一个常见用例做任何事情,如果可以的话,只使用那些。

于 2014-08-29T23:50:48.077 回答