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