2014-07-08 56 views
1

我想刪除以前插入到.odt文檔中的文本字段。在content.xml中他們看起來像:在Open Office中刪除字段UNO Java api

<text:user-field-decls> 
    <text:user-field-decl text:name="id" office:string-value="${baza.id}" office:value-type="string"/> 
    ... 
</text:user-field-decls> 

因爲,因爲我讀過Here刪除東西的方式是將它轉換爲具有配置接口()方法我都試過下面的代碼:

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 

在最後一行。如果是這樣的話,我該如何刪除該字段?

回答

1

而我發現它 - 類鑄造不是訪問我需要的接口的方式,查詢UNO是。所以我的問題的答案是:

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