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 Packman1001
      Olá, senhores, estou com dificuldades em 6 questões.
      Irei mandar uma agora apenas para ver se conseguem me explicar ou criar um código e comentar linha por linha. Tenho dificuldade extrema de entender, mas não tenho vergonha de admitir. Estou correndo atrás do prejuízo e aprendendo da maneira que posso.
      Eis a questão:
      Motivação
      Flavinho acabou de chegar do supermercado com K produtos na sacola, mas perdeu o recibo da compra. Ele está tentando lembrar dos preços de cada um dos produtos e precisa da sua ajuda. Por enquanto ele consegue se lembrar das seguintes informações:
      ·         O valor total da compra foi de R reais;
      ·         Os valores dos produtos eram números inteiros distintos.
      Por exemplo, se R=12 e K=3, temos as seguintes possíveis combinações de preços para os três produtos: {1,2,9}, {1,3,8}, {1,4,7}, {1,5,6}, {2,3,7}, {2,4,6} ou {3,4,5}.
       
      Ação
      Seu programa deve computar a quantidade de possíveis combinações de preços para os K produtos.
       
      Entrada 
      A primeira linha da entrada contém dois inteiros R e K, indicando respectivamente o valor total do recibo e o número de produtos comprados.
       
      Saída
      Imprima uma linha contendo um inteiro representando a quantidade de possíveis combinações de preços para os K produtos.
       
      Restrições
      ·         1 ≤ R ≤ 100
      ·         1 ≤ K ≤ 20
       
      Exemplos

       
      >>
      12 3
      <<
      7
      >>
      10 5
      <<
      0
      >>
      10 2
      <<
      4
       
      Preciso do código que passe nesses casos de testes e que por ventura, me expliquem o que cada linha significa.
      Não tenho muito mais a dizer. Obrigado por vossas atenções, de verdade.
       
       
    • By Neto Dinizz
      Olá bom dia,

      tenho um projeto MVC, preciso adicionar uma classe WCF e aproveitar as referencias já existente do entity, crei uma pasta e adicionei o serviço, Service.svc e IService.cs, o WCF alterou webconfig do projeto e parou de rodar, voltei o webconfig para o original, antes do de incluir a classe WCF, voltou a funcionar, porém o serviço WCF não funciona. Tenho algo para alterar no webconfig, para os dois rodarem juntos? Segue abaixo o código do webconfig alterado após incluir a classe WCF:

      <!-- //EXCLUÍDO AO ADICIONAR CLASSE WCF -->
      <system.webServer>
      <validation validateIntegratedModeConfiguration=false/>
      <modules>
      <remove name=ApplicationInsightsWebTracking/>
      <add name=ApplicationInsightsWebTracking type=Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web preCondition=managedHandler/>
      </modules>
      </system.webServer>
      <!-- //EXCLUÍDO AO ADICIONAR CLASSE WCF -->

      <!-- //INSERIDO AO ADICIONAR CLASSE WCF
      <system.serviceModel>
      <behaviors>
      <serviceBehaviors>
      <behavior name=>
      <serviceMetadata httpGetEnabled=true httpsGetEnabled=true />
      <serviceDebug includeExceptionDetailInFaults=false />
      </behavior>
      </serviceBehaviors>
      </behaviors>
      <serviceHostingEnvironment aspNetCompatibilityEnabled=true
      multipleSiteBindingsEnabled=true />
      </system.serviceModel>
      -->

      Muito obrigado!
    • By Leon Martin
      Boa tarde pessoal, preciso de uma ajuda urgente. Vcs tem alguma ideia de como eu faço esse programa? 
       
      Enunciado:
      Na teoria dos sistemas define-se o elemento MINMAX de uma matriz como sendo o maior elemento da linha onde se encontra o menor elemento da matriz. Faça um programa que carregue uma matriz 4 x 7 com números reais, calcule e mostre seu MINMAX e sua posição (linha e coluna).
       
      Exemplo: int MAT[4][7]
      Min elemento da matriz esta na MAT[1][3] = -19 (Linha Posição 1; Coluna Posição 3)
      Max elemento da linha onde esta o min elemento da matriz esta na MAT[1][5] = 101 (Linha Posição 1; Coluna Posição 5)
       
        0
      1
      2
      3
      4
      5
      6
      0
      3
      33
      9
      2
      15
      3
      22
      1
      5
      4
      76
      -19
      93
      101
      32
      2
      3
      -1
      43
      1
      554
      21
      53
      3
      55
      34
      1231
      212
      664
      234
      13413
       
    • By Fernando Rafael
      Olá a todos, atualmente estou quebrando a cabeça com 3 campos da geração do XML de NFCE/NFE, são eles:   <SignatureValue> ,  <DigestValue>   e  <X509Certificate>, como  faço para gerar esses 3 campos?
       
      Procurei na internet, mas não achei nada que me ajude, gostaria de fazer 100% com php e de preferência  manualmente (sem a utilização de classes prontas na qual é difícil de entender o código).
       
      Já tenho o certificado em PFX, e já gerei um certificado do tipo PEM.
       
      OBS 1: não precisam explicar ou mandar códigos de como inserir o conteúdo gerado nas tags <SignatureValue>  e  <X509Certificate>.
       
      OBS 2: O campo <DigestValue>  notei em alguns fóruns que é um retorno da Sefaz, é correto isso?
       
      ,
    • By guiarodrigues1
      Alguém poderia me ajudar em como colocar calculo de dilatação linear / superficial / volumétrica e de sólidos no DevC?
      Não estou conseguindo sair do lugar.
       
      Caso alguém queira mais informações segue em anexo link para baixar.
      Grato.
      Baixar PDF.
×

Important Information

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