Validação de xml por schema

01/03/2010

0

Pessoal estou com uma duvida,
tenho uma rotina de validação de xml que até então funcionava certinho, porem agora tenho um xml com uma tag diferente onde a mesma contem url do xsd de quem está me enviando o xml.

<?xml version="1.0" encoding="UTF-8"?>
<dadosEnvioColeta
xmlns="http://www.vale.com/schemas/IntegracaoCSC123xDellaVolpe/globalID/Business/Schemas/SCHM_DadosEnvioColeta.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.vale.com/schemas/IntegracaoCSC123xDellaVolpe/globalID/Business/Schemas/SCHM_DadosEnvioColeta.xsd">
        <dadosChamado>
                <numero>StringStr</numero>
                <dataAbertura>2001-12-17T09:30:47.0Z</dataAbertura>
        </dadosChamado>
</dadosEnvioColeta>


dentro da tag: dadosEnvioColeta, tem algumas url xmlns, xsi, se tiro essas url e deixo a tag: dadosEnvioColeta pura minha rotina consegue validar caso contrário minha rotina sempre da como validado com sucesso mesmo com o xml foram do padrão do schema.

segue minha rotina de validação:
public bool validate()
{
            XmlReaderSettings xmlSettings = new XmlReaderSettings();
            xmlSettings.ValidationType = ValidationType.Schema;
            XmlSchemaSet schemaCollection = new XmlSchemaSet();

            schemaCollection.Add(null, _pathSchema);
            xmlSettings.Schemas.Add(schemaCollection);
            xmlSettings.ValidationEventHandler += new ValidationEventHandler(reader_ValidationEventHandler);

            using (XmlReader reader = XmlReader.Create(_pathXml, xmlSettings))
            {
                xmlSettings.Schemas.Schemas();

                while (reader.Read())
                {
                }
                reader.Close();
            }

            _mensagem = _erro ? "Erro na validacao do schema xml" : "Xml validado com sucesso!";
            _listaResult.Add("resultado: " + _mensagem);

            bool result = _erro ? false : true;
            return result;
}

private void reader_ValidationEventHandler(object sender, ValidationEventArgs e)
{
       _countErro++;
      _listaResult.Add("Descricao: " + Tdv.Lib.Text.Convert.ReplaceInvalidChar(e.Exception.Message.ToString()));
      _erro = true;
}

se alguém puder me dar umas dicas sobre essas url e como posso fazer para validar pela minha rotina mesmo com essas url.

no aguardo...
Fabiano Góes

Fabiano Góes

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar