Xml Wert Abfragen

M

mirkoku

Hi,

ich habe ein Problem, undzwar erstelle ich als zwischenspeicher eine xml datei, um dort gewisse werte abzulegen wen meine datenbank nicht verfügbar ist.
so hierfür muss ich in meinem xml abfragen ob ein wert null ist und es dan dort reinschreiben. Dazu muss ich sagen xml eher noch ned viel gemacht.

Hier mal mein Xml
HTML:
<Timesave>
  <Time>
    <Time1>14.4.2009 15:13:51</Time1>
    <Time2></Time2>
    <Mac>00:00:00:00:00:00</Mac>
    <Ip>000000</Ip>
  </Time>
</Timesave>

jetzt habe ich mal gebaut und mit dem code hier fügt er mir Time 2 immer ein auch wen Time2 != null ist.

Code:
XmlDocument doc = new XmlDocument();
doc.Load(path+"/test.xml");

XmlNode xmlnd = doc.DocumentElement.SelectSingleNode(@"Time/Time2");
  
if (doc.SelectSingleNode(@"Time/Time2") == null)
            {
                xmlnd.InnerText = ti.timeToString;
            }
            else if (doc.SelectSingleNode(@"Time/Time2") != null)
            {
                Console.WriteLine("creat new");
            }
         
            
         doc.Save(@path+"/test.xml");
         doc.RemoveAll();

Hab ichn Denk Fehler oder von Grund auf falsch ?
Gruß Und thx 4 help
Mirkoku
 
Hi

Zuerst: Halte dich bitte an die Netiquette!

Zum Problem:
Du darfst nicht darauf prüfen, ob die Node null ist. Diese ist vorhanden und ist daher nie null. Frag von der Node den InnerText ab und prüfe, was darin steht.
Zu dem hast du noch einen Dreher drin:
Du prüfst derzeit "wenn ungleich null, dann lege eine neue an".
 
so,

ich habe mir jetzt was gebaut was mir den inhalt ausgiebt hier:

Code:
    FileStream st = new FileStream(path + "/test.xml", FileMode.Open);
            XmlReader r = XmlReader.Create(st);

            while (r.Read())
            {
                if (r.HasValue)
                {
                    String test = r.Value.ToString();
                  
                    Console.WriteLine(test);
                }
                else 
                {

                }


            }
            st.Close();

Jetzt wird mir alles ausgegeben, wo ein Value drin ist, nur das ist ja für mich nicht relevant ich muss ja wissen ob Time2 null oder not null ist. in die Richtung Teste ich gerade ob ich es irgendwie hinbekomme das er mir was auswirft wen er bei Time2 nichts findet.
 
hi Nico,

habs jetzt hinbekommen zwar ein wenig drum rum gewurschtel. reicht aber für meine zwecke.

hier meine Lösung.

Code:
            FileStream st = new FileStream(path + "/test"+count+".xml", FileMode.Open);
            XmlReader r = XmlReader.Create(st);
 
            while (r.Read())
            {
                if (r.HasValue)
                {
                    String test = r.Value.ToString();

                    if (test == "noTime")
                    {

                        xmlnd.InnerText = ti.timeToString;
                    }
            }
                      }
        
            st.Close();
            doc.Save(@path + "/test" + count + ".xml");
            doc.RemoveAll();

Erklärung:
in Time2 schreibe ich einfach NoTime beim Erstellen rein und frag dan danach ab.

Gruß
 
Zurück