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 Rhael Andrade
      Bom Dia.
      Gostaria de saber se consigo manipular o tamanha de uma coluna tablix usando reportviewer.
      tenho uma coluna A que se caso a coluna B a visualização dela for false, a coluna A aumentaria a largura da colunar.
      isso seria possível no reportviewer?
      der de já agradeço a atenção de todos.
    • By Bruno Soars
      Prezados, bom dia.
      sou novo no desenvolvimento em ASP. O antigo desenvolvedor sumiu e deixou uma bomba para eu resolver. Temo uma pagina na nossa intranet no qual a mesma e nosso serviço de chamados. Quando coloca todos os dados solicitados a mesma apresenta o seguinte erro:
       
      Persits.MailSender.4 error '800a0004'
      Connect has been reset by server.
      /INTRANET/suporte/index.asp, line 88

      Já estudei na internet as formas de resolver este problema, porém sem solução. Alguém no forum pode me ajudar neste erro? segue abaixo o código completo.
      <% Set con = Server.CreateObject("ADODB.Connection") con.open "PROVIDER=SQLOLEDB;DATA SOURCE=10.10.0.3;UID=microuni;PWD=microuni;DATABASE=intranet;Polling=true" empresa=request.form("edtempresa") departamento=request.form("edtdepartamento") usuario=request.form("edtusuario") categoria=request.form("edtcategoria") motivo=request.form("edtmotivo") descricao=request.form("edtdescricao") if empresa <> "" and departamento <> "" and usuario <> "" and categoria <> "" and motivo <> "" and descricao <> "" then set prioridadeemail= con.execute("select email,prioridade,ramal from tab_suporte_usuarios where usuario='" &usuario& "'") email=prioridadeemail("email") prioridade=prioridadeemail("prioridade") ramal=prioridadeemail("ramal") sql="insert into tab_suporte(categoria,motivo,usuario,data,descricao,situacao,empresa,departamento,emailresp,prioridade,ramal) values ('" & categoria & "','" & motivo & "','" & usuario & "',getdate(),'" & descricao & "','Pendente','" & empresa & "','" & departamento & "', '" &email& "', '" & prioridade& "','" & ramal & "')" 'response.write(sql) con.execute(sql) set cod=con.execute("select max(codigo) as codigo from tab_suporte") codigo = cod("codigo") total = codigo set emailsql=con.execute("select email,prioridade,ramal from tab_suporte_usuarios where usuario='" &usuario& "'") emailresp=emailsql("email") prioridade=emailsql("prioridade") ramal=emailsql("ramal") sql="SELECT right(('0' + rtrim(convert(char(2), DATEPART(d, data)))), 2) + '/' + right(('0' + rtrim(convert(char(2), DATEPART(m, data)))), 2) + '/' + convert(char(4), DATEPART(yyyy, data)) + ' - ' + right(('0' + rtrim(convert(char(2), DATEPART(hh, data)))), 2) + ':' + right(('0' + rtrim(convert(char(2), DATEPART(mi, data)))), 2) as data from tab_suporte where codigo='" & codigo & "'" set data=con.execute(sql) sqlfim="SELECT right(('0' + rtrim(convert(char(2), DATEPART(d, data + '03:00')))), 2) + '/' + right(('0' + rtrim(convert(char(2), DATEPART(m, data + '03:00')))), 2) + '/' + convert(char(4), DATEPART(yyyy, data + '03:00')) + ' às ' + right(('0' + rtrim(convert(char(2), DATEPART(hh, data + '03:00')))), 2) + ':' + right(('0' + rtrim(convert(char(2), DATEPART(mi, data + '03:00')))), 2) + ' horas' as datafim from tab_suporte where codigo='" & codigo & "'" set datafinal=con.execute(sqlfim) body = "************************* CHAMADO DE SUPORTE ***************************" & chr(13) & chr(13) body =body & "Número do Chamado...: " & codigo & chr(13) body =body & "Data - Hora.........: " & data("data") & chr(13) body =body & "Empresa.............: " & ucase(empresa) & chr(13) body =body & "Departamento........: " & ucase(departamento) & chr(13) body =body & "Usuário.............: " & ucase(usuario) & chr(13) body =body & "e-Mail..............: " & emailresp & chr(13) body =body & "Ramal...............: " & ramal & chr(13) body =body & "Categoria...........: " & categoria & chr(13) body =body & "Motivo..............: " & motivo & chr(13) body =body & "Nível de Prioridade.: " & prioridade & chr(13) & chr(13) body =body & "************************ DESCRIÇÃO DO CHAMADO **************************" & chr(13) & chr(13) body =body & descricao & chr(13) & chr(13) body =body & "**************************** OBSERVAÇÕES *******************************" & chr(13) & chr(13) body =body & "O prazo máximo para o atendimento deste chamado é até o dia " & datafinal("datafim") & "." & chr(13) & chr(13) body =body & "************************************************************************" body2 = "************************* CHAMADO DE SUPORTE ***************************" & chr(13) & chr(13) body2 =body2 & "Número do Chamado...: " & codigo & chr(13) body2 =body2 & "Data - Hora.........: " & data("data") & chr(13) body2 =body2 & "Empresa.............: " & ucase(empresa) & chr(13) body2 =body2 & "Departamento........: " & ucase(departamento) & chr(13) body2 =body2 & "Usuário.............: " & ucase(usuario) & chr(13) body2 =body2 & "Categoria...........: " & categoria & chr(13) body2 =body2 & "Motivo..............: " & motivo & chr(13) & chr(13) body2 =body2 & "************************ DESCRIÇÃO DO CHAMADO **************************" & chr(13) & chr(13) body2 =body2 & descricao & chr(13) & chr(13) body2 =body2 & "**************************** OBSERVAÇÕES *******************************" & chr(13) & chr(13) body2 =body2 & "O prazo máximo de atendimento deste chamado é de 03 (três) horas, portanto, se até o dia " & datafinal("datafim") & " você ainda não tiver obtido um retorno de nossa equipe, por favor entre em contato através do ramal 247 e informe o código " & codigo & "." & chr(13) & chr(13) body2 =body2 & "************************************************************************" 'response.write(body) 'response.write(body2) Set objmail = Server.CreateObject("Persits.MailSender") objmail.Host = "email-ssl.com.br" objmail.From = "suporte@centerlab.com.br" objmail.FromName = "Equipe de Suporte GENOMA" objmail.AddAddress "suporte@centerlab.com.br" objmail.Subject = "Equipe de Suporte GENOMA" objmail.IsHTML = True objmail.Body = body objmail.Send if Err.Number <> 0 then Response.write "Error: " & Err.description end if Set objmail2 = Server.CreateObject("Persits.MailSender") objmail2.Host = "email-ssl.com.br" objmail2.From = "suporte@centerlab.com.br" objmail2.FromName = "Equipe de Suporte GENOMA" objmail2.AddAddress "suporte@centerlab.com.br" objmail2.Subject = "Equipe de Suporte GENOMA" objmail2.IsHTML = True objmail2.Body = body2 objmail2.Send if Err.Number <> 0 then Response.write "Error: " & Err.description end if msg = codigo session("usuario")="" empresa="" departamento="" usuario="" categoria="" motivo="" descricao="" end if %> <html> <head> <meta http-equiv="Content-Language" content="pt-br"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="GENERATOR" content="Microsoft FrontPage 6.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>:: Central de Suporte GENOMA ::</title> <script language="javascript"> function verificaeenvia(){ if (document.formulario.edtempresa.value=='' || document.formulario.edtdepartamento.value=='' || document.formulario.edtusuario.value=='' || document.formulario.edtcategoria.value=='' || document.formulario.edtmotivo.value=='' || document.formulario.edtdescricao.value==''){ alert('É necessário o preenchimento de todos os campos.'); } else{ document.formulario.submit(); } } </script> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" rightmargin="0" bottommargin="0"> <table border="0" width="100%" cellspacing="0" cellpadding="0" height="100%"> <tr> <td valign="top" rowspan="2"><img src="index.1suporte.gif" width="64" height="473" border="0"></td> <td width="51%" height="44" bgcolor="#F5F5F5"> <p align="right"><b><font face="Arial" color="#808080">Solicitação de Suporte</font><font face="Arial" size="3"> </font></b></td> <td width="42%" bgcolor="#2E5E92" height="183" rowspan="2" valign="middle" align="right"> <p align="center"><font color="#FFFFFF"><font face="Verdana" size="1"><strong>Departamento de Informática</strong><br> <em>Cada vez mais agilizando o<br> atendimento aos seus usuários.</em></font></font></p> <p align="center"> </p> <p align="center"> </p> <p align="center"> </p> <p align="center"><font size="1" color="#FFFFFF" face="Tahoma"><b>* O prazo máximo para retorno é de<br> até 3 horas. Caso não seja atendido<br> dentro deste período, por favor<br> comunique no ramal 247.</b></font></p> </td> </tr> <tr> <td width="51%" height="139" valign="top"> <form method="POST" action="index.asp" name="formulario"> <table border="0" width="96%" cellspacing="0" cellpadding="0" height="351"> <tr> <td height="6" align="left" valign="middle"> </td> <td height="6"></td> </tr> <tr> <td width="23%" height="12" align="left" valign="middle"><font face="Verdana" size="1" color="#446B93"><strong> Empresa:</strong></font></td> <td height="12" valign="middle"><font face="Arial" size="1" color="#446B93"> <select name="edtempresa" size="1" id="edtempresa" style="background-color: #F5F5F5; font-family: Arial; font-size: 8 pt; border: 1 solid #C0C0C0" onChange="document.formulario.edtdepartamento.value=''; document.formulario.edtusuario.value=''; document.formulario.submit();"> <option value="<%=empresa%>" selected><%=empresa%></option> <% sql="select * from tab_suporte_empresas where empresa <> '" & empresa & "'" set valorescmb=Con.execute(sql) if not valorescmb.eof then valorescmb.movefirst while not valorescmb.eof%> <option value="<%=valorescmb("empresa")%>"><%=valorescmb("empresa")%></option> <% valorescmb.movenext wend end if %> </select><%if empresa="" then response.write " Selecione a sua empresa." end if%> </font></td> </tr> <tr> <td width="23%" height="30" align="l  
    • By Matth
      Um programa onde o usuário informa a idade de dois homens e duas mulheres, sendo que deve ser mostrado na tela a soma da idade do homem mais velho com a mulher mais nova e a multiplicação da idade da mulher mais velha com o homem mais novo!
    • By Michel Ol!ver
      Olá galera, estou com  um pequeno problema.. 
      gostaria de duplicar minha estrutura do report viewer dentro de um laço de repetição
       
       
      Tem possibilidade ?
       
      Exemplo do código abaixo : 
      ReportParameter[] parametros = { //cabecalho new ReportParameter("fazenda", ObjPropriedade.nome), new ReportParameter("lavoura", oArea.descricao + " (" + tamLavoura.ToString() + " Ha)"), new ReportParameter("cultura", ObjCiclo.Cultura.nome), new ReportParameter("resteva", resteva), new ReportParameter("dataPlantio", ObjCiclo.dataPlantio.Value.ToShortDateString()), new ReportParameter("dataColheita", ObjCiclo.dataColheita.Value.ToShortDateString()), new ReportParameter("unidade", ObjCiclo.Cultura.UnidadeMedida.nome), new ReportParameter("minima", ObjCiclo.prodMinima.ToString()), new ReportParameter("maxima", ObjCiclo.prodMaxima.ToString()), } reportAnalises.LocalReport.DataSources.Add(new ReportDataSource("dsCicloInter", lstRelCicloInter)); reportAnalises.LocalReport.DataSources.Add(new ReportDataSource("dsFertilizanteInter", lstRelFertilizanteInter)); reportAnalises.LocalReport.DataSources.Add(new ReportDataSource("dsMediaFertilizanteInter", lstMediaRelFertilizanteInter)); Tentei colocar um laço de repetição nessa estrutura, mas somente me apresenta um relatório. 
       
×

Important Information

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