java – JAXB XMLAdapter方法不会抛出异常
我正在使用JAXB
XMLadapter来组织和解组布尔值.应用程序的XML文件也将被C#应用程序访问.我们必须验证这个XML文件,这是使用XSD完成的. C#应用程序为布尔节点写入“True”值.但是,我们的XSD的验证是相同的,因为它只允许“true / false”或“1/0”.所以我们在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(); } } 上面的代码在正常条件下工作,但是当从xml文件读取无效数据(例如:“abcd”或“”)时,“throw new Exception();”没有被传播,Unmarshal进程继续读取下一个节点. 如何解决这个问题? 解决方法
从
XMLAdapter#unmarshal(ValueType) 的JavaDoc:
所以,是的 – 异常被吃掉,然后报告使用 检查您是否已经使用任何(自定义或许)ValidationEventHandler来组合您的异常,或使用 unmarshaller.setEventHandler(new DefaultValidationEventHandler()); 第一个错误会导致解组失败. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |