Thursday, 19 February 2015

How to ignore dtd validation when using ValidatorResources



I am using org.apache.commons.validator.ValidatorResources to validate inpustream (well formed xml). Problem is I dont want to validate it against dtd.


When I try this:



public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("src/main/resources/a.xml");
ValidatorResources validator = new ValidatorResources(fis);

}


then it doesnt throw exception just log exception:



12:59:44.545 [main] ERROR org.apache.commons.digester.Digester - Parse Error at line 2 column 18: Document root element "soapenv:Envelope", must match DOCTYPE root "null".
org.xml.sax.SAXParseException: Document root element "soapenv:Envelope", must match DOCTYPE root "null".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198) ~[?:1.7.0_45]
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134) [?:1.7.0_45]
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437) [?:1.7.0_45]
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368) [?:1.7.0_45]
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325) [?:1.7.0_45]
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:233) [?:1.7.0_45]
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:604) [?:1.7.0_45]
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3130) [?:1.7.0_45]
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:880) [?:1.7.0_45]
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) [?:1.7.0_45]
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117) [?:1.7.0_45]
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) [?:1.7.0_45]
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) [?:1.7.0_45]
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) [?:1.7.0_45]
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) [?:1.7.0_45]
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) [?:1.7.0_45]
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649) [?:1.7.0_45]
at org.apache.commons.digester.Digester.parse(Digester.java:1788) [commons-digester-1.8.1.jar:1.8.1]
at org.apache.commons.validator.ValidatorResources.<init>(ValidatorResources.java:161) [commons-validator-1.4.1.jar:1.4.1]
at org.apache.commons.validator.ValidatorResources.<init>(ValidatorResources.java:136) [commons-validator-1.4.1.jar:1.4.1]
at cz.isvs.ais3.ws.interceptor.CustomSaajSoapMessageFactory.main(CustomSaajSoapMessageFactory.java:182) [classes/:?]


which I dont want. How should I configure it ?


xml:



<?xml version="1.0"?>
<soapenv:Envelope xmlns:soapenv="http://ift.tt/sVJIaE" xmlns:urn="urn:cz:isvs:ais3:schemas:Ais3EoCtiAifo:v1"
xmlns:urn1="urn:cz:isvs:reg:schemas:RegTypy:v1" xmlns:urn2="urn:cz:isvs:ais3:schemas:Ais3Typy:v1">
<soapenv:Header />
<soapenv:Body>
<urn:Ais3EoSyncCtiAifo>
<urn:Dotaz>
<urn:Ais3EoCtiAifoData>
<urn:Aifo>1</urn:Aifo>
</urn:Ais3EoCtiAifoData>
</urn:Dotaz>
</urn:Ais3EoSyncCtiAifo>
</soapenv:Body>
</soapenv:Envelope>

No comments:

Post a Comment