[Java] JAXB XMLAdapterメソッドは例外をスローしません



Answers

Question

私は、JAXB XMLadapterを使用してブール値を整列化および非整列化しています。 アプリケーションのXMLファイルにはC#アプリケーションもアクセスします。 このXMLファイルを検証する必要があります。これはXSDを使用して行われます。 C#アプリケーションは、ブールノードの "True"値を書き込みます。 しかし、 "true / false"または "1/0"しか許されないので、同じことがXSDによって検証されます。 したがって、XSDではString型のブール値を保持しており、その文字列はXMLAdapterによって検証され、マーシャリングおよび非マーシャル化されます。 XMLアダプタは次のとおりです。

public class BooleanAdapter extends XmlAdapter<String, Boolean> 
{
@Override
    public Boolean unmarshal(String v) throws Exception
    {
        if(v.equalsIgnoreCase("true") || v.equals("1"))
        {
            return true;
        }
        else if(v.equalsIgnoreCase("false") || v.equals("0"))
        {
            return false;
        }
        else
        {
            throw new Exception("Boolean Value from XML File is Wrong.");
        }
    }

    @Override
    public String marshal(Boolean v) throws Exception
    {
        return v.toString();        
    }
}

上記のコードは通常の条件で動作しますが、無効なデータ(例: "abcd"または "")がxmlファイルから読み取られた場合、 "throw new Exception();" 伝播されず、非マーシャルプロセスは次のノードを読むために移動します。 私は例外がスローされるとすぐにアプリケーションを停止したい。 私の例外は食べ過ぎているようです。 どんな助けも大歓迎です。

この問題を解決するには?




Links