none
Alteração de atributos de um elemento XML RRS feed

  • Pergunta

  • Boa tarde, tenho a estrutura de XML abaixo: 

    <?xml version="1.0"?>

    <mailsender>

        <conexao smtp="smtp.gmail.com.br" porta="25" ssl="False" usuario="xxxxx@gmail.com" senha="123456789" />

    </mailsender>

    Como eu devo proceder para alterar os atributos do elemento conexão?


    Me, me and me...
    terça-feira, 25 de janeiro de 2011 14:40

Respostas

  • Amigo. eu fiz o xDocument é a versão do xmlDocument que suporte trabalhar com LINQ to XML, mas necessariamente você nao precisa utiliza-lo. refiz o exemplo utilizando o xmlDocument:

        string xml = "<?xml version=\"1.0\"?><mailsender><conexao smtp=\"smtp.gmail.com.br\" porta=\"25\" ssl=\"False\" usuario=\"xxxxx@gmail.com\" senha=\"123456789\" /></mailsender>";
    
        System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
        xmlDoc.LoadXml(xml);//LoadXml pois estou lendo de uma string, no seu caso será o Load mesmo
    
        System.Xml.XmlNode xNodeconexao= xmlDoc.SelectSingleNode("/mailsender/conexao");
        //Login
        System.Xml.XmlAttribute xLogin = xNodeconexao.Attributes["usuario"];
        xLogin.Value = "olavo.o.neto@gmail.com";
        //Senha
        System.Xml.XmlAttribute xSenha = xNodeconexao.Attributes["senha"];
        xSenha.Value = "abcdef";
        xmlDoc.Save(@"C:\out.xml");
    


    Olavo Oliveira Neto
    Se for útil marque como resposta e faça um Developer feliz :)
    • Marcado como Resposta Leonardo Luchini quarta-feira, 26 de janeiro de 2011 01:41
    terça-feira, 25 de janeiro de 2011 17:38
    Moderador

Todas as Respostas

  • Segue um exemplo, utilizando xdocument

    lembrando que tem de fazer para cada atributo que se deseja modificar

    string xml = "<?xml version=\"1.0\"?><mailsender><conexao smtp=\"smtp.gmail.com.br\" porta=\"25\" ssl=\"False\" usuario=\"xxxxx@gmail.com\" senha=\"123456789\" /></mailsender>";
    
        System.Xml.Linq.XDocument xdoc = XDocument.Parse(xml);
        XAttribute usuario = xdoc.Descendants("conexao").ElementAt(0).Attribute("usuario");
        usuario.Value = "olavo.o.neto@gmail.com";
    


    Olavo Oliveira Neto
    Se for útil marque como resposta e faça um Developer feliz :)
    terça-feira, 25 de janeiro de 2011 15:14
    Moderador
  • Eu consegui alterar obrigado, o código final está abaixo, se tiver alguma sugestão de boa prática será bem recebida, ou se validar como boa implementação também é de valor.

    XmlDocument

     

     

    doc = new XmlDocument(); /*Tive que usar para carregar o arquivo existente*/

    doc.Load(UtilGeral.file);

     

     

    XDocument XDoc = XDocument.Parse(doc.InnerXml);

     

     

    XAttribute XAtt = XDoc.Descendants("conexao").ElementAt(0).Attribute("smtp");

    XAtt.Value = txbProvedor.Text;

    XDoc.Save(

     

    UtilGeral.file);


    Me, me and me...
    terça-feira, 25 de janeiro de 2011 17:27
  • Amigo. eu fiz o xDocument é a versão do xmlDocument que suporte trabalhar com LINQ to XML, mas necessariamente você nao precisa utiliza-lo. refiz o exemplo utilizando o xmlDocument:

        string xml = "<?xml version=\"1.0\"?><mailsender><conexao smtp=\"smtp.gmail.com.br\" porta=\"25\" ssl=\"False\" usuario=\"xxxxx@gmail.com\" senha=\"123456789\" /></mailsender>";
    
        System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
        xmlDoc.LoadXml(xml);//LoadXml pois estou lendo de uma string, no seu caso será o Load mesmo
    
        System.Xml.XmlNode xNodeconexao= xmlDoc.SelectSingleNode("/mailsender/conexao");
        //Login
        System.Xml.XmlAttribute xLogin = xNodeconexao.Attributes["usuario"];
        xLogin.Value = "olavo.o.neto@gmail.com";
        //Senha
        System.Xml.XmlAttribute xSenha = xNodeconexao.Attributes["senha"];
        xSenha.Value = "abcdef";
        xmlDoc.Save(@"C:\out.xml");
    


    Olavo Oliveira Neto
    Se for útil marque como resposta e faça um Developer feliz :)
    • Marcado como Resposta Leonardo Luchini quarta-feira, 26 de janeiro de 2011 01:41
    terça-feira, 25 de janeiro de 2011 17:38
    Moderador