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...
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)