Bom Dia Pessoal:
Uma dúvida na questão de trabalhar com SAX no java. Quando trabalhamos com DOM conseguimos fazer a validação do XML atraves do setValidating, setNamespaceAware e setAttribute. No caso do SAX não tem como fazer ?
Grato ...
Bom Dia Pessoal:
Uma dúvida na questão de trabalhar com SAX no java. Quando trabalhamos com DOM conseguimos fazer a validação do XML atraves do setValidating, setNamespaceAware e setAttribute. No caso do SAX não tem como fazer ?
Grato ...
William, a classe javax.xml.parsers.SAXParserFactory
que cria a instância do parser do SAX
possui os mesmos métodos serValidating
e setNamespaceAware
. Com ambos setados como true
ele já não efetua a validação?
Boa tarde William Sauim Campana, o código abaixo permite você validar um XML pelo XSD. Se o XML não estiver de acordo com o XSD, uma exception é lançada.
Att,
import java.io.IOException;
import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.xml.sax.SAXException;
public class ValidaXML {
public static void main(String[] args) throws SAXException, IOException {
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(ValidaXML.class.getClassLoader().getResource("formatoVenda.xsd"));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(ValidaXML.class.getClassLoader().getResourceAsStream("venda.xml")));
}
}
Olá Willian, na minha opinião, sobre a sua questão é que não faz muito sentido você ter um validador para seu xml. Veja bem, você falará para seu handler qual node ele terá que ler e considerar para montar um elemento.... Seguindo os exemplos do capítulo, perceba que ele ignora o node de forma de pagamento.
Boa noite,
@Mateus, o problema é que o código poderia ser executado em sua grande parte até cair em alguma tag errada.
Creio que o método que o @Leandro colocou, valide antes de efetivamente começarmos a "trabalhar" com o XML.
Obrigado