Конвертировать docX в пользовательский XML - PullRequest
4 голосов
/ 29 апреля 2011

Я пытался преобразовать мои файлы docX в XML, который я сделал на заказ. Мои пользователи хотят, чтобы их данные были преобразованы в этот XML для более удобного запроса контента в их веб-приложении, и они хотят, чтобы входные данные были из их docX.

Я пытался найти API-интерфейс конвертера в Java, но ни один из них не соответствует моим требованиям. Я посмотрел в docx4j, но понял, что он конвертирует только в HTML и PDF. Я думаю, что если существует API-интерфейс конвертера, в который я могу ввести, скажем, промежуточный переводчик (XSLT), то результатом будет мой пользовательский XML с данными из моего документа.

Существует ли существующий инструмент для этого? Если таковых нет, любые предложения о подходе, которые я должен использовать при кодировании моего собственного конвертера, например, из openXML преобразовать в XSL-FO перед пользовательским XML?

Хотелось бы услышать от сообщества.

Большое спасибо.

Ответы [ 3 ]

3 голосов
/ 01 мая 2011

docx4j может использоваться для преобразования OpenXML в произвольный XML через XSLT.

Предполагается Шаблоны xslt и javax.xml.transform.stream. StreamResult результат , вы бы сделали что-то вроде этого:

        WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new java.io.File(inputfilepath));
        MainDocumentPart mdp = wordMLPackage.getMainDocumentPart();

        // DOM document to input to transform
        org.w3c.dom.Document doc = XmlUtils.marshaltoW3CDomDocument(
                mdp.getJaxbElement() );     

        XmlUtils.transform(doc, xslt, null, result);

Однако, если все, что вы хотите сделать, это преобразовать в XML, то docx4j (и Apache POI для этогоимеют значение), излишни.Вы можете просто использовать OpenXML4J напрямую.

Хотя наилучшим подходом будет преобразование через XSLT, зависит от того, ориентирован ли ваш целевой XML на документ или данные.

Если он ориентирован на документы, XSLT является хорошим подходом.

Если он ориентирован на данные, вы можете рассмотреть возможность привязки данных к управлению контентом.(Был другой подход, называемый customxml, но патентный фарс i4i может сделать этот подход нецелесообразным, если вы используете Word для редактирования)

1 голос
/ 29 апреля 2011

Насколько мне известно, docx-файлы - это просто xml-файлы в ZIP-контейнере. Чтобы преобразовать их в какой-то XML-формат вашего проекта, вам потребуется распаковать файл (в новую папку или в память), загрузить целевой XML-документ и применить XSLT к этому XML-файлу. Я не думаю, что вы упоминаете что-либо о вашей среде разработки, кроме тега "docx4j". Вы разрабатываете на Java? Если это так, я боюсь, что я не знаю, на какие библиотеки вам указывать для библиотек обработки zip и xml-преобразований (хотя я знаю, что они существуют, и поиск в Google займет всего 5 минут!) )

Чтобы просмотреть xml-файлы в docx, просто измените расширение файла с ".docx" на ".zip" и откройте в своем любимом инструменте ZIP-архива.

0 голосов
/ 29 апреля 2011

Мне больше всего повезло, сохранив docx в виде html прямо из Word.Html - это не xHtml, так что вам нужно его убрать.В противном случае, это работает довольно хорошо, если вы должны использовать рабочий процесс на основе Word.Вы можете написать скрипт VBA, чтобы Word открывал файл и программно сохранял его в Html.

...