Я использую docx4j 2.8.1 с элементами управления содержимым в моем файле .docx. Я могу заменить часть CustomXML, введя свой собственный XML и затем вызывая BindingHandler.applyBindings
после подачи входного XML. Я могу добавить токен в свой XML, такой как ¶
, тогда я бы хотел заменить этот токен в MainDocumentPart, но используя этот подход, когда я перебираю содержимое в MainDocumentPart с помощью метода this (link), ни один из моих текстов из моего XML даже в сбор, извлеченный из MainDocumentPart. Я думаю, что даже после привязки XML он остается отдельным от MainDocumentPart (??)Как заменить текст в управлении содержимым после, привязка XML с помощью docx4j
1
A
ответ
1
Я еще не пробовал это ни с чем, кроме небольшого тестового документа. Мой токен - пиккрут: ¶
. Поскольку это один символ, он не будет разделен на отдельные прогоны. Мой код:
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);
}
характер приходит знак абзаца из XML и впрыскивается путем применения XML-привязки к элементам управления контентом. Проблема в том, что содержимое из XML, похоже, не находится в MainDocumentPart, поэтому замена не работает.
(Использование docx4j 2.8.1)
FWIW, хотя я не использую привязки контента, я очень подобную вещь при преобразовании входящих разрывов строк (данные простой текст и содержимый HTML автор в других местах). Просто чтобы вы знали, что не одиноки ;-) – Ben