Docx4j 意外元素(uri:“http://schemas.openxmlformats.org/wordprocessingml/2006/main”,本地:“p”)

Posted

技术标签:

【中文标题】Docx4j 意外元素(uri:“http://schemas.openxmlformats.org/wordprocessingml/2006/main”,本地:“p”)【英文标题】:Docx4j unexpected element (uri:"http://schemas.openxmlformats.org/wordprocessingml/2006/main", local:"p") 【发布时间】:2019-05-22 12:46:33 【问题描述】:

我正在尝试将 html 表格添加到另一个单词表格的单元格中。

    我可以将 html 表格添加到另一个单词表格的单元格中。 (好的) 我可以生成最后一个word文档调用lastDocument.docx(OK) 我无法再次加载 WordprocessingMLPackage.load(lastDocument.docx),抛出这个 异常 Docx4j 意外元素 (uri:"http://schemas.openxmlformats.org/wordprocessingml/2006/main", 本地:“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));

【问题讨论】:

【参考方案1】:

我猜你的问题是:

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

在运行中添加 w:p(段落内容),这是不允许的。

你可以解压你的docx来查看word/document.xml

【讨论】:

【参考方案2】:

你好,我已经这样修复了我的代码

     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

【讨论】:

以上是关于Docx4j 意外元素(uri:“http://schemas.openxmlformats.org/wordprocessingml/2006/main”,本地:“p”)的主要内容,如果未能解决你的问题,请参考以下文章

Jaxb UnMarshal 错误:意外元素(uri:“”,本地:“processedSalesOrderTypeList”)。预期的元素是

javax.xml.bind.UnmarshalException:意外元素(uri:“”,本地:“组”)

如何修复:javax.xml.bind.UnmarshalException:意外元素(uri:“”,本地:“目录”)。预期元素是(无)

SOAP:解组错误:意外元素(uri:“”,本地:“lastCallDate”)。预期元素是 <gracePeriod>、<token>

javax.xml.bind.UnmarshalException:意外元素(uri:“”,local:“arg0”)。预期的要素是

cxf webservice抛异常 Unmarshalling Error: 意外的元素 (uri:"http:", local:"say")所需元素为<