Array
(
)

Manipulação de XML

Fabianogoes
   - 04 mar 2010

olá pessoal,
minha duvida é o seguinte:
tenho que carregar um arquivo xml assim:

<?xml version="1.0" encoding="UTF-8"?>
<dados_envio_coleta xmlns="http://www.xxx.com/DadosEnvioColeta.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.xxx.com/DadosEnvioColeta.xsd">
  <dados_chamado>
    <numero>00000001</numero>
    <data_abertura>2001-12-17T09:30:47.0Z</data_abertura>
  </dados_chamado>
</dados_envio_coleta>
preciso criar um novo xml sem os atributos: xmlns, xmlns:xsi, xsi:schemaLocation, ou seja, o elemento: dados_envio_coleta deve estar sem atributo nenhum

o novo xml deve ficar assim:
<?xml version="1.0" encoding="UTF-8"?>
<dados_envio_coleta>
  <dados_chamado>
    <numero>00000001</numero>
    <data_abertura>2001-12-17T09:30:47.0Z</data_abertura>
  </dados_chamado>
</dados_envio_coleta>
como posso criar uma rotina pra fazer isso???

Marcio
   - 05 mar 2010

Na verdade, pelo que entendi, é melhor você fazer um programa para abrir o arquivo xml e ler ele linha a linha para criar o seu novo arquivo, tipo assim:

            try
            {
                //Criar o leitor do Stream, não se esqueça de importar o System.IO (using System.IO;)
                StreamReader reader = new StreamReader(nomeArquivo); // Deve conter o caminho completo
                // Criar o "escritor"
                StreamWriter writer = new StreamWriter(nomeArquivoSaida);
                string linha = "";

                // Faça um laço para ler até que este encontre o final do arquivo.
                while (!reader.EndOfStream)
                {
                    // Neste exemplo optei por ler uma linha por vez
                    linha = reader.ReadLine();
                    // Mas você pode ler :
                    // reader.ReadBlock() - Ler o arquivo inteiro de uma vez se sempre estiver procurando a mesma coisa
                    // isso resolvez
                    // entre outros tipos de leitura.

                    if (linha.Contains("texto"))
                        linha = "outro texto"

                    writer.WriteLine(linha);
 
                }

                // Não se esqueça de fechar leitor/escritor (caso contrário o arquivo continuará aberto na memória).
                reader.Close();
                writer.Close();
            }
            catch (Exception erro)
            {
                MessageBox.Show(erro.Message);               
            }