富文本内容控制数据与 docx4j 绑定
Rich Text content control data binding with docx4j
尝试为表示富文本内容控件的 sdtBlock 创建到自定义 XML 部分的数据绑定无效,因为它在生成的 XML 中创建了 w:dataBinding 标记的 w15:dataBinding。富文本内容控件需要 w15 命名空间 uri。
我直接在 Java 中创建数据绑定,而不是在创作工具中,使用以下代码:
org.docx4j.wml.CTDataBinding cTDataBinding = new CTDataBinding();
并且 org.docx4j.w15 包中没有数据绑定 class。
有什么方法可以指定在编组时为该实例使用不同的命名空间吗?
@XmlElementDecl(namespace = "http://schemas.microsoft.com/office/word/2012/wordml", name = "dataBinding")
public JAXBElement<CTDataBinding> createDataBinding(CTDataBinding value) {
return new JAXBElement<CTDataBinding>(_DataBinding_QNAME, CTDataBinding.class, null, value);
}
因此您应该能够使用 w15 ObjectFactory 创建您想要的内容。例如:
SdtPr sdtPr = new SdtPr();
JAXBElement<CTDataBinding> w15DataBinding = new org.docx4j.w15.ObjectFactory().createDataBinding(new CTDataBinding());
sdtPr.getRPrOrAliasOrLock().add(w15DataBinding);
System.out.println(XmlUtils.marshaltoString(sdtPr));
产生(省略一些命名空间):
<w:sdtPr xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" >
<w15:dataBinding/>
</w:sdtPr>
尝试为表示富文本内容控件的 sdtBlock 创建到自定义 XML 部分的数据绑定无效,因为它在生成的 XML 中创建了 w:dataBinding 标记的 w15:dataBinding。富文本内容控件需要 w15 命名空间 uri。
我直接在 Java 中创建数据绑定,而不是在创作工具中,使用以下代码:
org.docx4j.wml.CTDataBinding cTDataBinding = new CTDataBinding();
并且 org.docx4j.w15 包中没有数据绑定 class。
有什么方法可以指定在编组时为该实例使用不同的命名空间吗?
@XmlElementDecl(namespace = "http://schemas.microsoft.com/office/word/2012/wordml", name = "dataBinding")
public JAXBElement<CTDataBinding> createDataBinding(CTDataBinding value) {
return new JAXBElement<CTDataBinding>(_DataBinding_QNAME, CTDataBinding.class, null, value);
}
因此您应该能够使用 w15 ObjectFactory 创建您想要的内容。例如:
SdtPr sdtPr = new SdtPr();
JAXBElement<CTDataBinding> w15DataBinding = new org.docx4j.w15.ObjectFactory().createDataBinding(new CTDataBinding());
sdtPr.getRPrOrAliasOrLock().add(w15DataBinding);
System.out.println(XmlUtils.marshaltoString(sdtPr));
产生(省略一些命名空间):
<w:sdtPr xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" >
<w15:dataBinding/>
</w:sdtPr>