StAX - come impostare XMLInputFactory.IS_VALIDATING true?
-
11-09-2019 - |
Domanda
questa è la mia prima volta con StAX per il parsing di documenti XML (ancora in fase di apprendimento). Durante il processo per analizzare un documento XML utilizzando XMLStreamReader e generare una copia del documento utilizzando XMLStreamWriter, ho incontrato il seguente avviso rappresentato come un commento nell'output dello scrittore:
<!-- Exception scanning External DTD Subset. True contents of DTD cannot be determined. Processing will continue as XMLInputFactory.IS_VALIDATING == false. -->
ho capito la causa della segnalazione, ma ho voluto che diventasse un errore piuttosto che in silenzio è diventato un avvertimento, così poi ho cercato di impostare XMLInputFactory.IS_VALIDATING true:
XMLInputFactory factory = XMLInputFactory.newInstance();
factory.setProperty(XMLInputFactory.IS_VALIDATING, Boolean.TRUE);
Ma quanto sopra ha generato un'eccezione per me:
Exception in thread "main" java.lang.IllegalArgumentException: vero valore di isValidating non sostenuto a com.sun.org.apache.xerces.internal.impl.PropertyManager.setProperty (PropertyManager.java:150) a com.sun.xml.internal.stream.XMLInputFactoryImpl.setProperty (XMLInputFactoryImpl.java:257) a com.test.test2.helper.SgmlDocumentParser.parse (SgmlDocumentParser.java:83) a com.test.test2.helper.Test.main (Test.java:66)
Allora, cosa c'è di sbagliato con il mio approccio?
Grazie!
Soluzione
Sembra implementazione StAX del Sole appena non supporta la convalida DTD. Si potrebbe provare a utilizzare Woodstox invece, sembra supportare la convalida.