Jump to content
_marlon307

[Resolvido] Adicionar vários elementos em um tag XML C#

Recommended Posts

Preciso de adicionar vários elementos em uma determinada tag do meu XML. Mas o código que estou utilizando ele adiciona os elementos sempre na ultima linha do meu Xml.

 

Meu XML esta assim, e estou tentando adicionar vários elementos <planilha> na tag <Planilhas>

<Xml>
  <Relatorio>
    <NotasAReceber />
    <RotaValue />
    <CtrlEstoque />
    <Planilhas>
      
    </Planilhas>
  </Relatorio>
</Xml>

E o código que estou usando esta nesta forma

private void CarregarRelatorio ()
        {
            bool consulta = false;

            if (ComboBoxRota.Text != "")
            {
                XElement xml = XElement.Load(@"cache\" + DateProprie + ".xml");

                foreach (XElement x in xml.Elements("planilha"))
                {
                    if (ComboBoxRota.Text == x.Attribute("Rota").Value)
                    {
                        consulta = true;
                        break;
                    }
                }
                if (consulta == false)
                {
                    XElement x = new XElement("planilha");
                    x.Add(new XAttribute("Rota", ComboBoxRota.Text));
                    x.Add(new XAttribute("Funcionario", TbFuncionario.Text.ToUpper())); TbFuncionario.Clear();
                    x.Add(new XAttribute("SaidaP", TbSaida.Text)); TbSaida.Clear();
                    x.Add(new XAttribute("VoltaP", TbVolta.Text)); TbVolta.Clear();
                    x.Add(new XAttribute("Deposito", TbDeposito.Text)); TbDeposito.Clear();
                    x.Add(new XAttribute("Gasto", TbGasto.Text)); TbGasto.Clear();
                    x.Add(new XAttribute("Cheque", TbCheque.Text)); TbCheque.Clear();
                    x.Add(new XAttribute("Moeda", TbMoeda.Text)); TbMoeda.Clear();
                    x.Add(new XAttribute("Falta", TbFalta.Text)); TbFalta.Clear();
                    x.Add(new XAttribute("Sobra", TbSobra.Text)); TbSobra.Clear();
                    x.Add(new XAttribute("Observacoes", TbObservacao.Text.ToUpper())); TbObservacao.Clear();
                    xml.Add(x);
                    xml.Save(@"cache\" + DateProprie + ".xml");
                }
            }
        }

 

Share this post


Link to post
Share on other sites
12 horas atrás, quintelab disse:

Você  terá que utilizar o AppendChild, pesquise sobre isso que encontrará exemplos.

Consegui fazer a leitura e gravar da forma que eu queria mas agora não estou conseguindo excluir um determinado item selecionado.

 O código que fiz e vi exemplos estava nessa forma

 

  	     public static void ExcluirItemRota(string Rota)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("config.xml");
                XmlElement mapElement = (XmlElement)xmlDoc.SelectSingleNode(@"//cfgRotas");

                if(mapElement != null)
                {
                    mapElement.RemoveAttribute(Rota);
                }
                xmlDoc.Save("config.xml"); 
            }

 

Share this post


Link to post
Share on other sites
1 hora atrás, quintelab disse:

Por que esta usando RemoveAttribute ?

Porque estou querendo remover uma linha especifica e não o nó inteiro.

Como você pode observa tem uma string no RemoveAttribute que quando carregada ela vai remover o item que colocar o nome

mapElement.RemoveAttribute(Rota);

Share this post


Link to post
Share on other sites
Em 27/04/2018 at 17:41, _marlon307 disse:

Consegui fazer a leitura e gravar da forma que eu queria mas agora não estou conseguindo excluir um determinado item selecionado.

 O código que fiz e vi exemplos estava nessa forma

 


  	     public static void ExcluirItemRota(string Rota)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("config.xml");
                XmlElement mapElement = (XmlElement)xmlDoc.SelectSingleNode(@"//cfgRotas");

                if(mapElement != null)
                {
                    mapElement.RemoveAttribute(Rota);
                }
                xmlDoc.Save("config.xml"); 
            }

 

Marlon, tenta algo desse tipo:

MapElements.Remove(Rota);

Ver se funciona.

Share this post


Link to post
Share on other sites
14 minutos atrás, rtavix disse:

Marlon, tenta algo desse tipo:


MapElements.Remove(Rota);

Ver se funciona.

 

 

Vlw amigo mas consegui fazendo dessa forma

public static void ExcluirItemRota(string Rota)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("config.xml");
                XmlElement mapElement = (XmlElement)xmlDoc.SelectSingleNode(@"//xRota[@Rota='"+ Rota +"']");

                if(mapElement != null)
                {
                    mapElement.ParentNode.RemoveChild(mapElement);
                }
                xmlDoc.Save("config.xml"); 
            }

Outra duvida que tenho agora e editar um valor de um elemento/

Share this post


Link to post
Share on other sites
1 minuto atrás, _marlon307 disse:

 

 

Vlw amigo mas consegui fazendo dessa forma


public static void ExcluirItemRota(string Rota)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("config.xml");
                XmlElement mapElement = (XmlElement)xmlDoc.SelectSingleNode(@"//xRota[@Rota='"+ Rota +"']");

                if(mapElement != null)
                {
                    mapElement.ParentNode.RemoveChild(mapElement);
                }
                xmlDoc.Save("config.xml"); 
            }

 

Que bom, boa sorte ae!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Felipe Nobre
      boa noite galera
      Alguém sabe como corrigir esse erro? Eu consigo gerar o PDF normalmente quando o texto não inclui caracteres especiais ou 
      caracteres comuns como acentos etc..
      No app config pensei que fosse o UTF mas está como padrão UTF-8
      Creio que deve ser alguma renderização. PS: Estou utilizando a fonte padrão ARIAL no design do meu report. Minhas referencias com versão mais atual são essas


    • By lucas9
      Com base nos conceitos de reutilização de código e flexibilidade, você deve planejar uma classe de faturamento com o método faturar. Lembre-se que não é permitido reescrever métodos; no entanto, deve ser considerado que cada perfil de cliente tem uma regra de faturamento diferente. Veja:
      Cliente pessoa física recebe um desconto de 15% e tem 30 dias para pagar. Cliente pessoa jurídica recebe um desconto de 20% e tem 60 dias para pagar. Cliente governo não recebe desconto e deve pagar à vista. Use os comandos try e catch para tratar as possíveis exceções (por exemplo, tentar ler mais clientes do que existem).
    • By Estevão Alves Avelino
      Estou com duvidas de como pegar os dados digitados no DataGridView e jogar dentro de variáveis, se alguém souber uma maneira de fazer isso ficarei muito grato!
    • By Estevão Alves Avelino
      Estou com duvidas de como pegar os dados digitados no DataGridView e jogar dentro de variáveis, se alguém souber uma maneira de fazer isso ficarei muito grato!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.