Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
Unmarshaller with No Default Data Validation
Why the Unmarshaller is not generating error on invalid data given in the XML file?
✍: FYIcenter.com
In the Reference Implementation and JRE 8 implementation of JAXB, the Unmarshaller does not have any default data validation. If the input XML has any invalid data, the Unmarshaller will will throw data parsing exceptions or assign null values.
1. Null value example - Create the following invalid XML file, UserError1.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <User ID="2"> <BirthDate>Unknown</BirthDate> <Name>Frank Y. Ivy</Name> <Sex>Male</Sex> </User>
Run the MyXmlToUser.java program given in the previous tutorial. The Unmarshaller returns null for the invalid date in the XML:
fyicenter> java -cp .:../jaxb-ri/mod/jaxb-api.jar:\ ../jaxb-ri/mod/jaxb-runtime.jar:\ ../jaxb-ri/mod/istack-commons-runtime.jar:\ ../jaxb-ri/mod/javax.activation-api.jar \ MyXmlToUser.java UserError1.xml Unmarshal XML file to user object... My user object: Name: Frank Y. Ivy BirthDate: null Sex: Male ID: 2 fyicenter> \local\jdk-1.8.0\bin\java MyXmlToUser UserError1.xml Unmarshal XML file to user object... My user object: Name: Frank Y. Ivy BirthDate: null Sex: Male ID: 2
2. Data parsing exception example - Create the following invalid XML file, UserError2.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <User ID="two"> <BirthDate>Unknown</BirthDate> <Name>Frank Y. Ivy</Name> <Sex>Male</Sex> </User>
Run the MyXmlToUser.java program given in the previous tutorial. The Unmarshaller returns NumberFormatException for the invalid integer in the XML:
fyicenter> java -cp .:../jaxb-ri/mod/jaxb-api.jar:\ ../jaxb-ri/mod/jaxb-runtime.jar:\ ../jaxb-ri/mod/istack-commons-runtime.jar:\ ../jaxb-ri/mod/javax.activation-api.jar \ MyXmlToUser.java UserError2.xml Exception in thread "main" java.lang.NumberFormatException: Not a number: two at com.sun.xml.bind.DatatypeConverterImpl._parseInt(DatatypeConverterImpl.java:125) at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$18.parse(RuntimeBuiltinLeafInfoImpl.java:742) at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$18.parse(RuntimeBuiltinLeafInfoImpl.java:740) ... fyicenter> \local\jdk-1.8.0\bin\javac MyXmlToUser.java fyicenter> \local\jdk-1.8.0\bin\java MyXmlToUser UserError2.xml Exception in thread "main" java.lang.NumberFormatException: Not a number: two at com.sun.xml.internal.bind.DatatypeConverterImpl._parseInt(DatatypeConverterImpl.java:110) at com.fyicenter.demo.User_JaxbXducedAccessor_id.parse(TransducedAccessor_field_Integer.java:57) at com.sun.xml.internal.bind.v2.runtime.unmarshaller.StructureLoader.startElement(StructureLoader.java:195) ...
⇒ MyXmlValidator.java - Unmarshal XML File with Schema Validation
⇐ MyXmlToUser.java - Unmarshal XML File to Data Object to
2017-06-30, 1311🔥, 0💬
Popular Posts:
How to download and install JDK (Java Development Kit) 6? If you want to write Java applications, yo...
JDK 11 java.sql.jmod is the JMOD file for JDK 11 SQL (Structured Query Language) module. JDK 11 SQL ...
How to run "javac" command from JDK tools.jar file? "javac" is the Java compiler command that allows...
JasperReports, the world's most popular open source business intelligence and reporting engine and J...
What Is poi-scratchpad-3.5.jar? poi-scratchpad-3.5.jar is one of the JAR files for Apache POI 3.5, w...