Я использую XML-адаптер JAXB для маршалирования и демонстрации логических значений. Файл XML приложения также будет доступен приложением С#. Мы должны проверить этот файл XML, и это делается с помощью XSD. Приложение С# записывает значение "True" для булевых узлов. Но тот же факт подтверждается нашим XSD, поскольку он позволяет только "true/false" или "1/0". Таким образом, мы сохранили String для булевых значений в XSD и эта строка будет проверена 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();" не размножается, а процесс Unmarshal переходит к следующему node. Я хочу, чтобы приложение прекращалось, как только генерируется исключение. Кажется, мое исключение съедается. Любая помощь очень ценится.
Как решить эту проблему?