Удаление полей в Open Office UNO Java API

1

Я хотел удалить текстовые поля, которые я ранее вставлял в мой.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>

Поскольку, как я прочитал здесь, как удалить что - то, чтобы привести его к интерфейсу, который имеет распоряжаться() метод, который я попытался следующий код:

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()

Где имя - это имя поля, которое я хотел удалить. Я предполагаю, что поле не используется нигде в документе, кроме объявления. Однако это исключает исключение ClassCast:

java.lang.ClassCastException: com.sun.star.uno.Any cannot be cast to com.sun.star.lang.XComponent

на последней строке. И если это так, как я могу удалить поле?

Теги:
uno

1 ответ

1
Лучший ответ

И я нашел это - классное литье - это не способ получить доступ к интерфейсу, в котором я нуждаюсь, запрос UNO. Поэтому ответ на мой вопрос:

XComponent comp = UnoRuntime.queryInterface(XComponent.class,fieldMaster);
comp.dispose();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню