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

Replace 如何在使用docx4j进行XML绑定后替换内容控件中的文本,replace,newline,docx4j,Replace,Newline,Docx4j,我在.docx文件中使用带有内容控件的docx4j 2.8.1。我可以通过注入自己的XML,然后在提供输入XML后调用BindingHandler.applyBindings来替换CustomXML部分。我可以在我的XML中添加一个标记,例如¨,然后我想在MainDocumentPart中替换该标记,但是使用这种方法,当我使用方法迭代MainDocumentPart中的内容时,我的XML中的任何文本都不在从MainDocumentPart提取的集合中。我认为,即使在绑定了XML之后,它仍然与主文

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

我还没有尝试过使用一个小测试文档。我的代币是Pilcrow:
^code>。因为它是一个单独的字符,所以不会在单独的运行中拆分。我的代码是:

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);
}
private void injectXml(WordprocessingMLPackage wordMLPackage)抛出JAXBEException{
MainDocumentPart=wordMLPackage.getMainDocumentPart();
字符串xml=XmlUtils.marshaltoString(part.getJaxbElement(),true);
xml=xml.replaceAll(“”,“”);
objectobj=XmlUtils.unmarshalString(xml);
第.SETJAXBELENT部分((文件)obj);
}
pilcrow字符来自XML,并通过将XML绑定应用于内容控件来注入。问题是XML中的内容似乎不在MainDocumentPart中,因此替换不起作用


(使用docx4j 2.8.1)

FWIW,尽管我目前没有使用内容绑定,但在转换入站换行符时,我会做一件非常类似的事情(数据是纯文本和其他地方编写的HTML内容)。只是让你知道你并不孤单;-)2021年,这仍然是相关的。这对我很有帮助,谢谢!