如何添加新的CustomXmlDataStoragePropertiesPart,如果docx已经有一些?
问题描述:
其实我为docx文件添加了自定义xml,这个文件已经没有自定义xml,如果docx已经有customxml,我的代码只是覆盖现有的(item1和itemprops1)。说我有customxml的docx。在那个定制的xml文件夹中,已经有8个xml(item1.xml,item2.xml ........ item4.xml和itemprops1.xml ......... itemprops4.xml)。一些我如何管理我的元素在新的xml(item5.xml)中,但它不会为item5.xml创建itemprops5.xml,而是覆盖itemprops1.xml。如何添加新的CustomXmlDataStoragePropertiesPart,如果docx已经有一些?
我的一些代码在下面,供大家参考:
CustomXmlDataStoragePart custom = new CustomXmlDataStoragePart();
PartName ps = custom.getPartName();
Parts pn = wordMLPackage.getParts();
CustomXmlDataStoragePart customXmlDataStoragePart = null;
if (pn.get(ps) == null) {
customXmlDataStoragePart =injectCustomXmlDataStoragePart(documentPart, wordMLPackage.getParts());
addProperties(customXmlDataStoragePart);
} else {
custom = injectCustomXmlDataStoragePart(documentPart, wordMLPackage.getParts());
addProperties(custom);
customXmlDataStoragePart = custom;
}
答
请参阅样本ContentControlsAddCustomXmlDataStoragePart.java
在线路84,它说:
parent.addTargetPart(customXmlDataStoragePart, AddPartBehaviour.RENAME_IF_NAME_EXISTS);
AddPartBehaviour.RENAME_IF_NAME_EXISTS确保任何通过给零件一个新的名字,现有零件不会被覆盖。
(或者,您也可以使用部分的构造,这需要零件名称参数,指定你想要的部分名称。)
请试试这个样本以确认你想要做什么。然后你可以尝试修改代码。