2013-10-11 2 views
1

Я использую docx4j 2.8.1 с элементами управления содержимым в моем файле .docx. Я могу заменить часть CustomXML, введя свой собственный XML и затем вызывая BindingHandler.applyBindings после подачи входного XML. Я могу добавить токен в свой XML, такой как , тогда я бы хотел заменить этот токен в MainDocumentPart, но используя этот подход, когда я перебираю содержимое в MainDocumentPart с помощью метода this (link), ни один из моих текстов из моего XML даже в сбор, извлеченный из MainDocumentPart. Я думаю, что даже после привязки XML он остается отдельным от MainDocumentPart (??)Как заменить текст в управлении содержимым после, привязка XML с помощью docx4j

ответ

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)

+0

FWIW, хотя я не использую привязки контента, я очень подобную вещь при преобразовании входящих разрывов строк (данные простой текст и содержимый HTML автор в других местах). Просто чтобы вы знали, что не одиноки ;-) – Ben