我想删除之前插入到 .odt 文档中的文本字段。在 content.xml 中,它们看起来像:
<text:user-field-decls>
<text:user-field-decl text:name="id" office:string-value="${baza.id}" office:value-type="string"/>
...
</text:user-field-decls>
因为,正如我所读到的,删除某些内容的方法是将其转换为具有 dispose() 方法的接口,我尝试了以下代码:
XTextFieldsSupplier xTextFieldsSupplier = (XTextFieldsSupplier) UnoRuntime.queryInterface(
XTextFieldsSupplier.class, xDoc);
XNameAccess xNamedFieldMasters = xTextFieldsSupplier.getTextFieldMasters();
Object fieldMaster = xNamedFieldMasters.getByName("com.sun.star.text.fieldmaster.User."+name);
((XComponent)fieldMaster).dispose()
其中 name 是我要删除的字段的名称。我假设除了声明之外,该字段未在文档中的任何地方使用。但是,这会引发 ClassCast 异常:
java.lang.ClassCastException: com.sun.star.uno.Any cannot be cast to com.sun.star.lang.XComponent
在最后一行。如果是这种情况,我该如何删除该字段?