Неожиданный элемент Docx4j (uri: "http://schemas.openxmlformats.org/wordprocessingml/2006/main", local:" p ") - PullRequest
0 голосов
/ 22 декабря 2018

Я пытаюсь добавить таблицу html в ячейку таблицы других слов.

  1. Я могу добавить HTML-таблицу в ячейку другой таблицы слов.(ОК)
  2. Я могу сгенерировать вызов документа последнего слова lastDocument.docx (ОК)
  3. Я не могу загрузить снова WordprocessingMLPackage.load (lastDocument.docx), выдать это исключение Docx4j неожиданный элемент (uri: "http://schemas.openxmlformats.org/wordprocessingml/2006/main", local:" p ")

это мой код:

Tr workingRow = (Tr) XmlUtils.deepCopy(templateRow);
    List<?> textElements = WMLPackageUtils.getTargetElements(workingRow, Text.class);

    List<Tc> tcList = WMLPackageUtils.getTargetElements(workingRow, Tc.class);
    Tc tc = WMLPackageUtils.getTc(tcList, "${Replace_Tex1}");

    XHTMLImporterImpl XHTMLImporter = new XHTMLImporterImpl(wordMLPackage);
    XHTMLImporter.setParagraphFormatting(FormattingOption.IGNORE_CLASS);
    XHTMLImporter.setTableFormatting(FormattingOption.IGNORE_CLASS);
    for (Object object : textElements) {
        Text text = (Text) object;
        if (!text.getValue().equals("${Replace_Tex1}"))
            continue;
        String replacementValue = (String) replacements.get(text.getValue());
        //text.setValue(replacementValue);
        R r = (R) text.getParent();
        r.getContent().clear();
        r.getContent().addAll(XHTMLImporter.convert(replacementValue, null));

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Здравствуйте, я исправил свой код так

     R r = (R) text.getParent();
     P paragraphOfText = wordMLPackage.getMainDocumentPart().createParagraphOfText("");
     paragraphOfText.getContent().clear();

     r.getContent().clear();eviewtable.getContent().add(new Tr(new Tc(itemTable, new Paragraph())));
     tc.getContent().addAll(XHTMLImporter.convert(replacementValue, null));
     tc.getContent().add(paragraphOfText);

он работает :) Спасибо @ JasonPlutext

0 голосов
/ 22 декабря 2018

Полагаю, ваша проблема:

  r.getContent().addAll(XHTMLImporter.convert(replacementValue, null));

Добавление w: p (содержание абзаца) внутри серии, что недопустимо.

Вы можете разархивировать docx для просмотраслово / document.xml

...