Usuário com melhor resposta
validar xml c#

Pergunta
-
pessoal, possuo um xml. como posso validar o mesmo?
Caso tenha algum erro, me informar qual erro e se possível a linha.
Vlw
- Movido Levi DomingosModerator terça-feira, 19 de julho de 2011 22:28 (De:C#)
Respostas
-
Boa Tarde Rafa.
Uma maneira de saber se seu xml esta correto você pode carregalo em um DataSet:
string xmlFilePath = Server.MapPath(@"App_Data/Symbols.xml");
if (File.Exists(xmlFilePath))
{
//create the Dataset object
using (DataSet ds = new DataSet())
{
//load the xml data to the dataset
ds.ReadXml(xmlFilePath);
}
}Colocando esta rotina num Try-Catch vocÊ consegue capturar o erro.
Abraço.
André Ramiro
- Marcado como Resposta Levi DomingosModerator terça-feira, 1 de novembro de 2011 14:51
-
Boa tarde, Rafa_Martin.
O erro apresentado eh o resultado da validaçao de conteudo do xsd. No caso a tag "tsNumeroLote" nao esta declarada no Xml, porem deve existir a validaçao desta tag no xsd. Veja se ela existe no xsd, caso nao precise dela remova a tag de validaçao "tsNumeroLote" do xsd.
Espero ter ajudado,
Abraço
Rafael de Camillis Tairum
MCPD Enterprise Application Developer 3.5 , Comptia+ TTT
Blog: http://dicamillis.wordpress.com- Marcado como Resposta Levi DomingosModerator terça-feira, 1 de novembro de 2011 14:51
Todas as Respostas
-
rafa-martin,
Dê uma olhada nestes posts que tratam sobre este assunto:
http://social.msdn.microsoft.com/Forums/pt/xmlpt/thread/028ebf97-ecee-416c-b62a-1187abc698cd
http://social.msdn.microsoft.com/Forums/pt/xmlpt/thread/fcaf5a89-94a5-4cf7-8ea0-26d0beeab131
at.,
Rogério de Resende Ohashi | Ohashi.NET (.NET, Security, C#, WinForms, WCF, Workflow, Azure, Windows Phone, Mono) -
pessoal, tenho o seguinte xml:
<?xml version="1.0" encoding="utf-8"?>
<tns:EnviarLoteRpsEnvio xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:tipos="http://www.ginfes.com.br/tipos" xmlns:tns="http://www.ginfes.com.br/servico_enviar_lote_rps_envio" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ginfes.com.br/servico_enviar_lote_rps_envio">
<tns:NumeroLote>2</tns:NumeroLote>
<tns:Cnpj>90790164000152</tns:Cnpj>
<tns:InscricaoMunicipal>90790100178</tns:InscricaoMunicipal>
<tns:QuantidadeRps>1</tns:QuantidadeRps>
<tns:ListaRps>
<tns:Rps>
<tipos:IdentificacaoRps>
<tipos:Numero>1</tipos:Numero>
<tipos:Serie>A</tipos:Serie>
<tipos:Tipo>1</tipos:Tipo>
</tipos:IdentificacaoRps>
<tipos:DataEmissao>1975-08-18T01:34:33.63</tipos:DataEmissao>
<tipos:NaturezaOperacao>5</tipos:NaturezaOperacao>
<tipos:OptanteSimplesNacional>2</tipos:OptanteSimplesNacional>
<tipos:IncentivadorCultural>2</tipos:IncentivadorCultural>
<tipos:Status>1</tipos:Status>
<tipos:Servico>
<tipos:Valores>
<tipos:ValorServicos>10000</tipos:ValorServicos>
<tipos:ValorPis>0</tipos:ValorPis>
<tipos:ValorCofins>0</tipos:ValorCofins>
<tipos:IssRetido>2</tipos:IssRetido>
<tipos:OutrasRetencoes>0</tipos:OutrasRetencoes>
<tipos:BaseCalculo>10000</tipos:BaseCalculo>
<tipos:Aliquota>0.05</tipos:Aliquota>
<tipos:ValorLiquidoNfse>10000</tipos:ValorLiquidoNfse>
<tipos:DescontoIncondicionado>0</tipos:DescontoIncondicionado>
</tipos:Valores>
<tipos:ItemListaServico>ABC</tipos:ItemListaServico>
<tipos:CodigoCnae>3720</tipos:CodigoCnae>
<tipos:CodigoTributacaoMunicipio>1</tipos:CodigoTributacaoMunicipio>
<tipos:Discriminacao>Teste</tipos:Discriminacao>
<tipos:MunicipioPrestacaoServico>4159</tipos:MunicipioPrestacaoServico>
</tipos:Servico>
<tipos:Prestador>
<tipos:Cnpj>90790164000132</tipos:Cnpj>
<tipos:InscricaoMunicipal>90790100188</tipos:InscricaoMunicipal>
</tipos:Prestador>
<tipos:Tomador>
<tipos:IdentificacaoTomador>
<tipos:CpfCnpj>
<tipos:Cnpj>19562042000105</tipos:Cnpj>
</tipos:CpfCnpj>
</tipos:IdentificacaoTomador>
<tipos:Contato />
</tipos:Tomador>
<tipos:IntermediarioServico>
<tipos:RazaoSocial>Testes Tomador</tipos:RazaoSocial>
<tipos:Cnpj>90790164000132</tipos:Cnpj>
<tipos:InscricaoMunicipal>90790100188</tipos:InscricaoMunicipal>
</tipos:IntermediarioServico>
<tipos:ConstrucaoCivil>
<tipos:CodigoObra>1</tipos:CodigoObra>
<tipos:Art>1</tipos:Art>
</tipos:ConstrucaoCivil>
</tns:Rps>
<tns:Rps>
<tipos:IdentificacaoRps>
<tipos:Numero>-6462</tipos:Numero>
<tipos:Serie>AB</tipos:Serie>
<tipos:Tipo>2</tipos:Tipo>
</tipos:IdentificacaoRps>
<tipos:DataEmissao>1971-07-10T05:37:39.40</tipos:DataEmissao>
<tipos:NaturezaOperacao>3</tipos:NaturezaOperacao>
<tipos:OptanteSimplesNacional>1</tipos:OptanteSimplesNacional>
<tipos:IncentivadorCultural>1</tipos:IncentivadorCultural>
<tipos:Status>2</tipos:Status>
<tipos:Servico>
<tipos:Valores>
<tipos:ValorServicos>10</tipos:ValorServicos>
<tipos:ValorDeducoes>15</tipos:ValorDeducoes>
<tipos:ValorPis>15</tipos:ValorPis>
<tipos:ValorCofins>15</tipos:ValorCofins>
<tipos:ValorIr>15</tipos:ValorIr>
<tipos:IssRetido>10</tipos:IssRetido>
<tipos:ValorIss>15</tipos:ValorIss>
<tipos:OutrasRetencoes>10</tipos:OutrasRetencoes>
<tipos:BaseCalculo>10</tipos:BaseCalculo>
<tipos:Aliquota>-7203.7851</tipos:Aliquota>
<tipos:ValorLiquidoNfse>15</tipos:ValorLiquidoNfse>
<tipos:DescontoIncondicionado>0</tipos:DescontoIncondicionado>
</tipos:Valores>
<tipos:ItemListaServico>A</tipos:ItemListaServico>
<tipos:Discriminacao>Teste</tipos:Discriminacao>
<tipos:MunicipioPrestacaoServico>7232</tipos:MunicipioPrestacaoServico>
</tipos:Servico>
<tipos:Prestador>
<tipos:Cnpj>90790164000132</tipos:Cnpj>
</tipos:Prestador>
<tipos:Tomador>
<tipos:Endereco>
<tipos:Numero>1</tipos:Numero>
<tipos:Complemento>casa</tipos:Complemento>
<tipos:Bairro>Centro</tipos:Bairro>
</tipos:Endereco>
</tipos:Tomador>
<tipos:ConstrucaoCivil>
<tipos:CodigoObra>1</tipos:CodigoObra>
<tipos:Art>1</tipos:Art>
</tipos:ConstrucaoCivil>
</tns:Rps>
</tns:ListaRps>
</tns:EnviarLoteRpsEnvio>fiz um programa c# para validar esse xml. aí está me dando o seguinte erro: Tipo 'http://www.ginfes.com.br/tipos:tsNumeroLote' é não declarado.
alguém saberia me dizer o porque?
-
Rafa mais este erro acontece quando você vai tentar fazer o que com este arquivo? como este xml é montado: via código ou manualmente?
Que tipo de validação você gostaria de fazer, validação de estrutura ou conteúdo?
como funciona seu programa?
-
Boa Tarde Rafa.
Uma maneira de saber se seu xml esta correto você pode carregalo em um DataSet:
string xmlFilePath = Server.MapPath(@"App_Data/Symbols.xml");
if (File.Exists(xmlFilePath))
{
//create the Dataset object
using (DataSet ds = new DataSet())
{
//load the xml data to the dataset
ds.ReadXml(xmlFilePath);
}
}Colocando esta rotina num Try-Catch vocÊ consegue capturar o erro.
Abraço.
André Ramiro
- Marcado como Resposta Levi DomingosModerator terça-feira, 1 de novembro de 2011 14:51
-
Boa tarde, Rafa_Martin.
O erro apresentado eh o resultado da validaçao de conteudo do xsd. No caso a tag "tsNumeroLote" nao esta declarada no Xml, porem deve existir a validaçao desta tag no xsd. Veja se ela existe no xsd, caso nao precise dela remova a tag de validaçao "tsNumeroLote" do xsd.
Espero ter ajudado,
Abraço
Rafael de Camillis Tairum
MCPD Enterprise Application Developer 3.5 , Comptia+ TTT
Blog: http://dicamillis.wordpress.com- Marcado como Resposta Levi DomingosModerator terça-feira, 1 de novembro de 2011 14:51