Что такое CTP, CTTbl классы (объекты) в Apache POI?

Я пытаюсь понять некоторые части Apache POI. Например, я пытаюсь получить текст (или таблицу и т. д.) из существующего файлы DOCX. Например существует метод getParagraph(..CTP p) в XWPFDocument:
Он возвращает "абзац с классом CTP p". Но что такое класс CTP? Я просмотрел структуру xml документа, но не нашел ничего подобного. В результате я не знаю, как вызвать mthod в первую очередь. существует также метод getTable (CTTbl CTTbl) для того же XWPFDocument, который возвращает "таблицу своим CTtbl-объектом.

кажется, что есть CP* что-то для каждой части/типа данных внутри документов ooxml, поэтому я хотел бы понять, как с ними работать. Более того, из документации кажется, что эти методы являются единственным прямым способом получить элементы, не вставляя их в коллекцию или угадывая их положение.

1 ответов


классы CTx являются XMLBeans фантики. Они автоматически генерируются из опубликованных файлов XML-схемы спецификации OOXML.

если элемент xml в файле является p один, тогда результирующая оболочка XMLBeans для OOXML будет CTP. Если это table, тогда это будет CTTable. Пространство имен xml-элемента будет отображаться в пакете класса, поэтому, если у вас есть два разных элемента с одинаковым локальным именем, но разными пространствами имен, вы будете в состоянии решить, какой из них вы хотите.

если у вас есть выбор, не работайте с классами КТ. Они имеют низкий уровень и требуют, чтобы вы знали о структуре и формате базового формата файла. Они обычно требуются только для расширенных случаев использования.

почти все, что вы хотите сделать для общего случая использования, будет возможно с классами упаковки Apache POI usermodel, используйте только те, если сможете.