XML e Dataset (Merge)


Ola Pessoal, hoje irei falar um pouco sobre Dataset com xml, veremos como fundir dois arquivos xml e fazer isso virar um arquivo só.

 

Mãos a massa.

 

Nosso exemplo é simples, porém bastante funcional, espero que assim possam abrir novas idéias pra vocês.

 

Começaremos criando dois arquivos xml, o primeiro com o nome Clientes.xml,e o segundo com o nome Produtos.xml, eis a estrutura abaixo.

 

Clientes.xml

<?xml version="1.0" ?>

<Principal>

<Clientes>

          <Nome>Maria da Silva</Nome>

          <Sexo>Feminino</Sexo>

          <DataCadastro>23/02/2007</DataCadastro>

</Clientes>

<Clientes>

          <Nome>Marcio de  Oliveira</Nome>

          <Sexo>Masculino</Sexo>

          <DataCadastro>22/02/2007</DataCadastro>

</Clientes>

</Principal>

                  

Produtos.xml

<?xml version="1.0"?>

<Produtos>

   <Tipo id="10">

      <Nome>Shampoo</Nome>

      <Preco>R$ 10,00</Preco>

   </Tipo>

   <Tipo id="20">

      <Nome>Shampoo</Nome>

      <Preco>R$ 10,00</Preco>

   </Tipo>

</Produtos>

                       

Iremos criar um projeto do tipo Web com C#, dê o nome que quiser.

 

Adicione um Botão.

 

ID: btnGerar

Text: Gerar Xml

 
 dmgeraxmlfig01.gif

Figura 01..

 

Na codificação do botão iremos adicionar o seguinte código.

 

Não esqueça de importar o Namespace System.Xml;

 

protected void btnGerar_Click(object sender, EventArgs e)

    {

        //Criando as variaveis de leitura de arquivo xml 

        XmlTextReader xml1 = new XmlTextReader("e:\\Clientes.xml");

        XmlTextReader xml2 = new XmlTextReader("e:\\Produtos.xml");

        //Criando os DataSets para posteriormente ler o arquivo xml

        DataSet ds1 = new DataSet();

        DataSet ds2 = new DataSet();

        try

        {

            ds1.ReadXml(xml1);

            ds2.ReadXml(xml2);

 

            // Merge >> Método que permite fundir dois objetos

            ds1.Merge(ds2);

            //Criando um novo arquivo xml com a estrutura dos 2 arquivos xml

            ds1.WriteXml("e:\\Resultado.xml", XmlWriteMode.IgnoreSchema);

            Response.Write("Arquivo criado");

        }

        catch (Exception ex)

        {

            Response.Write(ex.ToString());

        }

    }


Arquivo gerado.


dmgeraxmlfig02.gif 

Figura 02. Resultado.


Com isso devemos ter nosso xml gerado com o resultado de 2 arquivos xml. Você também pode usar um DataTable para fazer isso, o DataTable agora tem o método Merge, assim não precisando mais usar DataSet.


É isso ai pessoal até mais.