Validação XML

Pessoal,
tenho um WebServices que vai receber do client um arquivo XML (uma String). Eu tenho o XSD desse arquivo XML que vou receber. Mas não sei como é que faço a validação desse XML em tempo de execução.
Alguém sabe como eu faço isso? :oops:
obs: p/ navegar no xml eu tô usando XStream…

Para validar um XML com XSD, use um parser como DOM ou SAX (acho que o XStream não faz essa validação). Exemplo de uso de validação:

// A função a seguir retorna só um DocumentBuilder. Para efetuar o "parse", chame o método "parse" sobre o DocumentBuilder retornado.
	public static DocumentBuilder getDOMParser(final String nomeArquivoXSD) {
		DocumentBuilder parser = null;

		try {
			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
			// Efetuar validação
			dbf.setValidating(true);
			// Specifies that the parser produced by this code will ignore comments.
			dbf.setIgnoringComments(true);
			// Specifies that the parsers created by this factory must eliminate 
			// whitespace in element content (sometimes known loosely as 
			// 'ignorable whitespace') when parsing XML documents (see XML Rec 2.10).
			dbf.setIgnoringElementContentWhitespace(true);
			// Specifies that the parser produced by this code will convert CDATA 
			// nodes to Text nodes and append it to the adjacent (if any) text node.
			dbf.setCoalescing(true);
			// Usar o "schema" para fazer validação 
			dbf.setAttribute("http://apache.org/xml/features/validation/schema", Boolean.TRUE);
			// Especificar o "schema"
			// Note que requer um nome de arquivo.
			dbf.setAttribute(
				"http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",nomeArquivoXSD);
			// Criar o parser
			parser = dbf.newDocumentBuilder();

		} catch (ParserConfigurationException pce) {
                    pce.printStackTrace();
		}

		return parser;
	}

Valeu thingol :smiley:

Olá Thingol…

Será que no caso do uso de uma DTD para ser feita a estruturação este tipo de validação seria útil, seria apenas a substituição do “schema” por “dtd”?
E também já fiz o parse utilizando o DOM … agora seria só necessário fazer a inclusão dessas novas linhas de código para ser feita a validação? Esta DTD no caso poderia ser interna ou externa, bastaria apenas sua referência, o local onde está armazenada?

Obrigada.