Usuário com melhor resposta
atributos xml

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.
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
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
-
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