2013-05-15 117 views
0

我想解析Java中使用簡單的XML框架的Iptables XML配置。閱讀空元素

我被困在這一塊配置的行爲元素,比如閱讀:

<actions> 
     <DROP /> 
    </actions> 

如何我在Java中的DROP元素存在XML文件中的檢查?

+0

如果您只是想確定'actions'是否有任何'DROP'子元素,請使用'actions/drop'或'not(actions/drop)'XPATH表達式 –

+0

如何在代碼中編寫該代碼? SImple XML框架解析XML文檔。我如何註釋Java類以檢查actions元素中是否存在空的DROP元素? –

回答

1

假設actions映射到類似這樣的一類:

@Root(name = "actions") 
public class Actions 
{ 
    @Element(name = "DROP", required = false) 
    private String drop; 


    // ... 

    public String getDrop() 
    { 
     return drop; 
    } 
} 

如果你不想做drop是空的,你可以註釋它作爲需要

@Element(name = "DROP", required = true) 
private String drop; 

的如果drop爲空,則參數required = true將引發異常。如果不允許使用空的drop,則可以使用它。

第二種方法是設置required = false;那麼它將被反序列化的null如果它是空的:

@Element(name = "DROP", required = false) 
private String drop; 

// Test if 'drop' is empty: 
Actions a = ... 
boolean isEmpty = (a.getDrop() == null); 

現在可以檢查下降是否由null(=空)或null(=設置)。如果drop可能是空的,那麼您可以使用它,這不是問題/必需的。

作爲第三種方式,您可以實現您自己實現序列化/反序列化的Converter

0

我已經構建了一個轉換器,以便空元素不返回爲空而是作爲空字符串返回。

+0

那麼你的問題解決了?!如果是,請標記爲*接受*。 – ollo