Array
(
)

Validação de xml por schema

Fabianogoes
   - 01 mar 2010

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...