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, 1068👍, 0💬
Popular Posts:
JDK 11 jdk.jconsole.jmod is the JMOD file for JDK 11 JConsole tool, which can be invoked by the "jco...
JDK 11 java.rmi.jmod is the JMOD file for JDK 11 RMI (Remote Method Invocation) module. JDK 11 RMI m...
Java Architecture for XML Binding (JAXB) is a Java API that allows Java developers to map Java class...
What is the sax\Counter.java provided in the Apache Xerces package? I have Apache Xerces 2.11.0 inst...
The JDT project provides the tool plug-ins that implement a Java IDE supporting the development of a...