2

我在 .docx 文件中使用带有内容控件的 docx4j 2.8.1。我可以通过注入我自己的 XML 然后BindingHandler.applyBindings在提供输入 XML 后调用来替换 CustomXML 部分。我可以在我的 XML 中添加一个标记,例如我想替换 MainDocumentPart 中的那个标记,但是使用这种方法,当我用这个(链接)方法遍历 MainDocumentPart 中的内容时,我的 XML 中的任何文本都不是即使在从 MainDocumentPart 中提取的集合中。我在想,即使在绑定 XML 之后,它仍然与 MainDocumentPart 分开(??)

4

1 回答 1

2

除了一个小测试文档之外,我还没有尝试过这个。我的令牌是 Pilcrow: 。由于它是单个字符,因此不会在单独的运行中拆分。我的代码是:

private void injectXml (WordprocessingMLPackage wordMLPackage) throws JAXBException {
    MainDocumentPart part = wordMLPackage.getMainDocumentPart();
    String xml = XmlUtils.marshaltoString(part.getJaxbElement(), true);
    xml = xml.replaceAll("¶", "</w:t><w:br/><w:t>");
    Object obj = XmlUtils.unmarshalString(xml);
    part.setJaxbElement((Document) obj);
}

pilcrow 字符来自 XML,并通过将 XML 绑定应用到内容控件来注入。问题是 XML 中的内容似乎不在 MainDocumentPart 中,因此替换不起作用。

(使用 docx4j 2.8.1)

于 2013-10-12T09:36:21.900 回答