none
Criar um XML a partir de XSD RRS feed

  • Pergunta

  • Boa tarde a todos,

    Estou com uma pequena dificuldade em criar um arquivo Xml a partir de um arquivo Xsd

    Estou tentando dessa forma mais não obtive o retorno esperado.

              

    DataSet ds = new DataSet();
                DataTable dt;
                DataRow dr;

                ds.ReadXmlSchema(@"C:\teste\EntregaConteinerNovo.xsd");
                dt = ds.Tables[0];

                dr = dt.NewRow();
               // dr["entregasConteineres"] = "xmlns='http://www.pucomex.serpro.gov.br/cct'";
                dr["identificacaoEntrega"] = "611504719";
                dr["identificacaoPessoaJuridica"] = "07396865000169";
                dr["codigoRA"] = "7911109";
                dr["numeroConteiner"] = "00I5TKzi49";
                dr["tara"] = "1500.252";
                dr["lacre"] = "ABC129";
                dr["pesoAferido"] = "1600.009";
                dr["cnpj"] = "27657485000149";
                dr["viaTransporte"] = "09";
                dr["codigoRADestino"] = "7911109";
                dr["prefixoTrem"] = "ABC1239";
                dr["quantidadeVagoes"] = "9";
                dr["avariasIdentificadas"] = "SEM AVARIAS9";
                dr["divergenciasIdentificadas"] = "SEM DIVERGENCIAS9";
                dr["observacoesGerais"] = "TESTE SOAP AUTOMATIZADO9";

                dt.Rows.Add(dr);

                ds.WriteXml(@"C:\teste\Golfers.xml");

    Segue o Xsd para analise

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <schema version="1.0" xmlns="http://www.w3.org/2001/XMLSchema"
    	elementFormDefault="qualified" targetNamespace="http://www.pucomex.serpro.gov.br/cct"
    	xmlns:tns="http://www.pucomex.serpro.gov.br/cct">
    
        <include schemaLocation="../TipoComplexo.xsd" />
        <include schemaLocation="../reuso/Recebedor.xsd" />
    
    	<element name="entregasConteineres">
    		<complexType>
    			<sequence>
    				<element name="entregaConteiner" type="tns:EntregaConteiner" minOccurs="1" maxOccurs="1" />
    			</sequence>
    		</complexType>
    		<unique name="identificacaoEntregaConteiner">
    			<selector xpath="tns:entregaConteiner" />
    			<field xpath="tns:identificacaoEntrega" />
    		</unique>
    	</element>
    
    
    	<complexType name="EntregaConteiner">
    		<sequence>
    
    			<element name="identificacaoEntrega" type="tns:StringBasica50" minOccurs="1" maxOccurs="1" />
    
    			<element name="identificacaoPessoaJuridica" type="tns:CNPJ" minOccurs="1" maxOccurs="1" />
    
    			<element name="local" type="tns:TLocal" minOccurs="1" maxOccurs="1" />
    			
    			<element name="conteineres" minOccurs="1" maxOccurs="1" >
    				<complexType>
    	    			<sequence>
    	    				<element name="conteiner" type="tns:ConteinerExtend" minOccurs="1" maxOccurs="50" />
    	    			</sequence>
    	    		</complexType>
    				<unique name="duplicidadeConteinerEntrega">
    					<selector xpath="tns:conteiner"/>
    					<field xpath="tns:numeroConteiner"/>
    				</unique>
    			</element>
    			
    			<element ref="tns:recebedor" minOccurs="1" maxOccurs="1"/>
    			
    			<element name="avariasIdentificadas" type="tns:StringBasica250" minOccurs="0" maxOccurs="1"/>
    
    			<element name="divergenciasIdentificadas" type="tns:StringBasica250" minOccurs="0" maxOccurs="1" />
    
    			<element name="observacoesGerais" type="tns:StringBasica250" minOccurs="0" maxOccurs="1" />
    			
    		</sequence>
    	</complexType>
    </schema>

    O erro apresentado diz que o tipo de dado não é declaro, alterei os tipos de dados mo Xsd e não é possível encontrar a tabela.

    Desde já muito obrigado.

    terça-feira, 30 de janeiro de 2018 18:32

Respostas

  • O problema é que voce tem os includes TipoComplexo.xsd e Recebedor.xsd e eu creio que metodo ReadXmlSchema nao consiga ler XSDs externos. Este metodo é especifico para o XSD de um DataSet da classe system.data. É um XSD bem particular e nao generico  como o seu.

    Veja o link abaixo:

    https://stackoverflow.com/questions/10128573/using-xsds-with-includes


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    terça-feira, 30 de janeiro de 2018 18:55
    Moderador

Todas as Respostas

  • O problema é que voce tem os includes TipoComplexo.xsd e Recebedor.xsd e eu creio que metodo ReadXmlSchema nao consiga ler XSDs externos. Este metodo é especifico para o XSD de um DataSet da classe system.data. É um XSD bem particular e nao generico  como o seu.

    Veja o link abaixo:

    https://stackoverflow.com/questions/10128573/using-xsds-with-includes


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    terça-feira, 30 de janeiro de 2018 18:55
    Moderador
  • William,

    Então é bem peculiar mesmo, consegui resolver o problema das includes, tinha passado despercebido e já coloquei no diretório.

    Rodei novamente mais é o problema do nó para resolver, está apresentando o seguinte erro

    A coluna 'identificacaoEntrega' não pertence à tabela entregasConteineres.

    Mais obrigado pelo retorno.

    terça-feira, 30 de janeiro de 2018 19:23