none
atributos xml RRS feed

  • Pergunta

  • Boa tarde,

    A minha questão é a seguinte:

    Tenho um xml que gostava de apanhar os valores das tags mas não consigo:

    Codigo xml

     
    <?xml version="1.0" encoding="UTF-8"?>
    -<contas> 
      <conta> 
        <id> 1 </id> 
        <username> geslogica </username> 
        <pwd> geslogica </pwd> 
        <url> www.google.com </url> 
      </conta> 
      <conta> 
        <id> 2 </id> 
        <username> geslogica </username> 
        <pwd> geslogica </pwd> 
        <url> www.google.com </url> 
       </conta> 
    </contas>

      XmlDocument doc = new XmlDocument();
    
      doc.Load(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)+ "\\Proside\\contas.xml");
    
      XmlNodeList nodes = doc.SelectNodes("/contas/conta");
    
       //MessageBox.Show(nodes.Count.ToString());
    
        foreach (XmlNode node in nodes)
       {
          if (node.Attributes["id"] != null)
          {
            MessageBox.Show(node.Attributes["id"].InnerText);
           }
                   
        } 

    Qual será o erro?

    Se me puderem ajudar agradecia.

    terça-feira, 15 de maio de 2012 17:04

Respostas

  • Oi Elio, Bom dia

    O que acontece é que o id que vc está tentando acessar não é um atributo e sim um elemento.

    Troca essa expressão 

    node.Attributes["id"].InnerText);

    por essa:

    node.ChildNodes[0].InnerText;

    Funcionou aqui pra mim.


    Espero ter ajudado
    Ruth Resende
    MVP, MCTS - Biztalk Server
    www.biztalkbrasil.com.br
    Twitter: @ruthresende

    • Sugerido como Resposta Ruth Resende quarta-feira, 16 de maio de 2012 12:18
    • Marcado como Resposta Elio Godinho quarta-feira, 16 de maio de 2012 14:22
    quarta-feira, 16 de maio de 2012 12:17

Todas as Respostas

  • Oi Elio, Bom dia

    O que acontece é que o id que vc está tentando acessar não é um atributo e sim um elemento.

    Troca essa expressão 

    node.Attributes["id"].InnerText);

    por essa:

    node.ChildNodes[0].InnerText;

    Funcionou aqui pra mim.


    Espero ter ajudado
    Ruth Resende
    MVP, MCTS - Biztalk Server
    www.biztalkbrasil.com.br
    Twitter: @ruthresende

    • Sugerido como Resposta Ruth Resende quarta-feira, 16 de maio de 2012 12:18
    • Marcado como Resposta Elio Godinho quarta-feira, 16 de maio de 2012 14:22
    quarta-feira, 16 de maio de 2012 12:17
  • Eu fiz assim e também resolveu:

    XmlNodeList nodes = doc.GetElementsByTagName("conta");
    
       //MessageBox.Show(nodes.Count.ToString());)
       int contador = 0;
       foreach (XmlNode node in nodes)
       {
         ListViewItem item = new ListViewItem();
         item.Text = node["username"].InnerText;
         item.Tag = node["id"].InnerText;
    
         listView1.Items.Add(item);
         listView1.Items[contador].SubItems.Add(node["pwd"].InnerText);
                        listView1.Items[contador].SubItems.Add(node["url"].InnerText);
                        contador++;
                    }

    Obrigado,

    Élio

    quarta-feira, 16 de maio de 2012 15:22