如何在使用docx4j进行XML绑定后替换内容控件中的文本

时间:2013-10-11 19:16:54

标签: replace newline docx4j

我在.docx文件中使用docx4j 2.8.1和内容控件。我可以通过注入自己的XML来替换CustomXML部分,然后在提供输入XML之后调用BindingHandler.applyBindings。我可以在我的XML中添加一个令牌,例如,然后我想在MainDocumentPart中替换该令牌,但是当我使用this (link)方法遍历MainDocumentPart中的内容时,使用该方法我的XML中的文本甚至在从MainDocumentPart中提取的集合中。我想即使在绑定XML之后,它仍然与MainDocumentPart(??)

分开

1 个答案:

答案 0 :(得分:1)

我还没有尝试过这个,只有一点测试文档。我的标记是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)