• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

MuRdOc

Problema com XML

8 mensagens neste tópico

boas, tou a utilizar um .xml para guardar definiçoes de um programa que estou a fazer. A parte de criar o .xml e meter la os dados correu td bem, o problema é que nao consigo ler os valores, dá sempre null...

tou a fazer assim:

                textReader = new XmlTextReader("c:\\settings.xml");
                textReader.Read();

                while (textReader.Read())
                {

                    if (textReader.LocalName == "Username")
                        lblTest1.Text = textReader.Value;

                    if (textReader.LocalName == "Password")
                        lblTest2.Text = textReader.Value;

                    if (textReader.LocalName == "Adress")
                        lblTest3.Text = textReader.Value;

                    if (textReader.LocalName == "Database")
                        lblTest4.Text = textReader.Value;
                }

E este é o file .xml

<?xml version="1.0"?>
<ROOT>
  <Username>sa</Username>
  <Password>teste</Password>
  <Adress>teste</Adress>
  <Database>Northwind</Database>
</ROOT>

Alguem pode dar umas luzinhas? Thanks

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei se estarei a dizer alguma bacorada, mas como o XML funciona com nest´s, se calhar teria mais lógica teres o teu ficheiro XML com um nest Conf (por exemplo) e depois então teres os seus "atributos" nesse nest.

É só um àparte.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é assim, eu n percebo muito de XML (se calhar seria mais certo dizer q n percebo mm nada) portanto n tou a ver o que tas a dizer... de qualquer das maneiras vou googlar isso.

PS: caraças enganei-me na secçao :s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não será melhor algo do genero:

Dim doc As XmlDocument = New XmlDocument
        doc.Load("C:\file.xml")

        Dim nodes As XmlNodeList = doc.SelectNodes("/ROOT")
        Dim node As XmlNode
        For Each node In nodes

            Console.WriteLine(node("Username").InnerText)
            Console.WriteLine(node("Password").InnerText)
            Console.WriteLine(node("Address").InnerText)
            Console.WriteLine(node("Database").InnerText)
        Next

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não será melhor algo do genero:

Dim doc As XmlDocument = New XmlDocument
        doc.Load("C:\file.xml")

        Dim nodes As XmlNodeList = doc.SelectNodes("/ROOT")
        Dim node As XmlNode
        For Each node In nodes

            Console.WriteLine(node("Username").InnerText)
            Console.WriteLine(node("Password").InnerText)
            Console.WriteLine(node("Address").InnerText)
            Console.WriteLine(node("Database").InnerText)
        Next

hmmm ok vou tentar, thx ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bom, fiz assim:

//string strUsername = "Username";
(...)
XmlDocument document = new XmlDocument();
document.Load("c:\\settings.xml"); 

XmlNodeList xmllist = document.SelectNodes("/ROOT");

foreach (XmlNode node in xmllist)
{
     //if (String.Equals(strUsername, node.Name))
           lblTest1.Text += node.InnerText;
}

o que devolve (a parte importante é a 1ª label2): teste1cy6.th.jpg

mas sem a string e o if comentados, nao devolve nada, fica só label2. n consigo ir buscar os outros nodes

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ah consegui :)

XmlDocument document = new XmlDocument();
document.Load("c:\\settings.xml");
XmlElement xmlROOT = document.DocumentElement;
XmlNode xmlSettings = xmlROOT.FirstChild;

XmlNodeList xmllist = xmlSettings.ChildNodes;

foreach (XmlNode node in xmllist)
{
     if (String.Equals(strUsername, node.Name))
         lblTest1.Text = node.InnerText;
     if (String.Equals(strPassword, node.Name))
         lblTest2.Text = node.InnerText;
     if (String.Equals(strAdress, node.Name))
         lblTest3.Text = node.InnerText;
     if (String.Equals(strDatabase, node.Name))
         lblTest4.Text = node.InnerText;
}

fica aqui para quem precisar :D

Thanks a todos os que ajudaram.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpa ter enviado o código em VB.NET, mas só agora reparei que era em C# que precisavas. :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora