如果docx已经有了一些新的CustomXmlDataStoragePropertiesPart,如何添加?

时间:2016-07-29 05:38:32

标签: java xml docx4j

实际上我为docx文件添加了自定义xml,它已经没有自定义xml,如果docx已经有了customxml,我的代码只会覆盖现有的(item1和itemprops1)。说我有customxml的docx。在该自定义xml文件夹中,已经有8个xmls(item1.xml,item2.xml ........ item4.xml和itemprops1.xml ......... itemprops4.xml)。一些我如何在新的xml(item5.xml)中管理我的元素,但它没有为item5.xml创建itemprops5.xml,而是覆盖了itemprops1.xml。

以下提供了一些代码供您参考:

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;
        }

1 个答案:

答案 0 :(得分:0)

请参阅示例ContentControlsAddCustomXmlDataStoragePart.java

在第84行,它说:

parent.addTargetPart(customXmlDataStoragePart, AddPartBehaviour.RENAME_IF_NAME_EXISTS);

AddPartBehaviour.RENAME_IF_NAME_EXISTS通过为部件指定新名称,确保不会覆盖任何现有部件。

(或者,您可以使用带有PartName参数的零件构造函数来指定所需的零件名称。)

请尝试此示例以确认它符合您的要求。然后你可以尝试调整代码。