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

How to add new CustomXmlDataStoragePropertiesPart if the docx already have some?

实际上我为没有自定义xml的docx文件添加了自定义xml,如果docx已经有自定义xml我的代码只是覆盖现有的(item1和 itemprops1)。假设我有带有 customxml 的 docx。在那个自定义 xml 文件夹中已经有八个 xml(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;
        }

请看样本ContentControlsAddCustomXmlDataStoragePart.java

在第 84 行,它说:

parent.addTargetPart(customXmlDataStoragePart, AddPartBehaviour.RENAME_IF_NAME_EXISTS);

AddPartBehaviour.RENAME_IF_NAME_EXISTS 通过给部件一个新名称确保任何现有部件不被覆盖。

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

请尝试此示例以确认它是否符合您的要求。然后你可以尝试修改代码。