2014-08-29 5 views
8

Я пытаюсь понять некоторые части POI Apache. Например, я пытаюсь получить текст (или таблицу и т. Д.) Из существующего файла docx. Например, there is a method getParagraph(..CTP p) in XWPFDocument:
Он возвращает «абзац с классом CTP p». Но что такое класс CTP? Я заглянул внутрь XML-структуры документа, но не нашел ничего подобного. В результате я не знаю, как назвать mthod в первую очередь. There is also a method getTable(CTTbl CTTbl) для того же XWPFDocument, который возвращает «таблицу своим CTtbl-объектом».Что такое классы CTP, CTTbl (объекты) в Apache POI?

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

ответ

7

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

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

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

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