Pergunta

Esta é minha primeira vez usando StAX para analisar documentos XML (ainda em fase de aprendizagem). Durante o processo para analisar um documento XML usando XMLStreamReader e gerar uma cópia do documento utilizando XMLStreamWriter, eu encontrei o seguinte aviso representado como um comentário na saída do escritor:

 <!-- Exception scanning External DTD Subset.  True contents of DTD cannot be determined.  Processing will continue as XMLInputFactory.IS_VALIDATING == false. -->

Eu entendi a causa do aviso, mas eu queria que ele se torne um erro em vez de silenciosamente se tornou um aviso, então eu tentei conjunto XMLInputFactory.IS_VALIDATING como true:

 XMLInputFactory factory = XMLInputFactory.newInstance();
 factory.setProperty(XMLInputFactory.IS_VALIDATING, Boolean.TRUE);

Mas o para mim acima emitiu uma exceção:

Exception in thread "main" java.lang.IllegalArgumentException: verdadeiro valor de isValidating não suportado pelo com.sun.org.apache.xerces.internal.impl.PropertyManager.setProperty (PropertyManager.java:150) em com.sun.xml.internal.stream.XMLInputFactoryImpl.setProperty (XMLInputFactoryImpl.java:257) em com.test.test2.helper.SgmlDocumentParser.parse (SgmlDocumentParser.java:83) em com.test.test2.helper.Test.main (Test.java:66)

Então, o que está errado com a minha abordagem?

Obrigado!

Foi útil?

Solução

Parece que a implementação StAX da Sun apenas não suporta a validação DTD. Você pode tentar usar Woodstox vez, parece validação apoio.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top