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!

È stato utile?

Soluzione

Sembra implementazione StAX del Sole appena non supporta la convalida DTD. Si potrebbe provare a utilizzare Woodstox invece, sembra supportare la convalida.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top