Laden...

xml abruf Problem

Erstellt von bd.cole vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.075 Views
B
bd.cole Themenstarter:in
99 Beiträge seit 2007
vor 16 Jahren
xml abruf Problem

Also das mit dem speichern in der xml file hat prima geklappt. speicherpoblem xmlJetzt hab ich ja die Verbindungen gespeichert. Jetzt weiß ich z. B. von einer verbindung den Startpunktx, wie kann ich jetzt den dazugehörigen Startpunkty bekommen? Also ich kann ja mit diesem code das xml nach dem string durchsuchen. Jetzt müsst ich halt noch rausbekommen an welchem index das startpunktx steht


string result = "";

                string file = @"..\\..\\Verbindungen.xml";
                XmlTextReader r = new XmlTextReader(file);

                while (r.Read())
                {
                    if (r.NodeType == XmlNodeType.Text)
                    {
                        if (r.Value.Trim().IndexOf(startpunktx) != -1)
                            result += r.Value.Trim();
                    }
                }

A
254 Beiträge seit 2007
vor 16 Jahren

Hi,

Du kannst auch über XML Serialisierung die Datei wieder einlesen.

Hier ein Beipsiel aus einem Projekt von mir.

 public void Load(string _datei)
        {
            try
            {
                XmlSerializer xml = new XmlSerializer(typeof(layAnsichten));
                FileStream file = new FileStream(_datei, FileMode.Open);
                m_ansichten = (layAnsichten)xml.Deserialize(file);
                file.Close();
            }
            catch (Exception ex)
            {
                throw new layKonfigException(0, _datei, ex);
            }
        }

Danach ist Deine Datenstruktur wieder im Speicher und Du kannst über das WurzelElement in meinem m_ansicht über die untergeordneten Objekte zugreifen.

Tschüss

B
bd.cole Themenstarter:in
99 Beiträge seit 2007
vor 16 Jahren

Ok, aber jetzt such ich ja in meiner xml file den string 245, dass der wert von startpointx z. B. Dann findet der den auch und gibt es in meiner messagebox aus. Aber wie finde ich jetzt den dazugehörigen startpointy? ich muss da ja irgendwie heausfinden welchen index die verbindung hat in der mein gesuchter startpointx steht, oder? dann kann ich dann mit verbindung[index].startpointy oder so mein startpointy auslesen. aber wie finde ich den index raus?
so sieht meine xml file aus:


- <Verbindung>
  - <verbindung>
    <StartPointX>196</StartPointX> 
    <StartPointY>265</StartPointY> 
    <EndPointX>466</EndPointX> 
    <EndPointY>198</EndPointY> 
    <StartButton>eingang0</StartButton> 
    <EndButton>ausgang11</EndButton> 
  </verbindung>
  - <verbindung>
    <StartPointX>176</StartPointX> 
    <StartPointY>267</StartPointY> 
    <EndPointX>162</EndPointX> 
    <EndPointY>148</EndPointY> 
    <StartButton>eingang2</StartButton> 
    <EndButton>ausgang02</EndButton> 
  </verbindung>
</Verbindung>

A
254 Beiträge seit 2007
vor 16 Jahren

Hi,

mit dem Ansatz gebe ich Dir recht, es bleibt Dir nichts übrig über alle Elemente zu iterieren, um den gewünschten startpointX herauszufinden, danach hast Du ja eine Referenz auf das verbindungs-Objekt und die dazugehörigen Daten.

Versteh gerade irgendetwas nicht ?

Tschü

B
bd.cole Themenstarter:in
99 Beiträge seit 2007
vor 16 Jahren

Ok versteh zwar deine Antwort jetzt nicht ganz, aber erstmal danke das du mir versuchst zu helfen. Wie bekomme ich den jetzt raus zu welchem knoten der StartPointX gehört? Gibts da irgend eine Methode oder so?

A
254 Beiträge seit 2007
vor 16 Jahren

Hi,

immer die Verständigungsprobleme...

Ich verstehe Deine Fragen auch nicht so recht. Noch ein Vesuch ...

Du hast nun eine Liste von Verbindungs-Objekten und kannst über die Liste auf jedes einzelne Objekt zugreifen. Wenn Du nun auf ein Objekt zugreifst, kannst Du doch auf alle Daten des einen Objektes zugreifen (StartPointX, StartPointY ...).

Damit bekommst Du doch immer den richtigen StartPointY, wenn Du auf das gleiche Verbindungs-Objekt zurgeifst.

Falls wir uns immer noch nicht verstehen, dann poste doch den bestehenden Code und beschreib kurz, was du codieren willst. Dann könnte ich Dir einen Vorschlag machen wie ich es machen würde. Code sagt manchmal mehr als 1000 Worte...

Tschüss

B
bd.cole Themenstarter:in
99 Beiträge seit 2007
vor 16 Jahren

ok fangen wir einfach nochmal an. Also ich habe die oben beschriebene XML Datei. Dort sind mehrere Verbindungen gespeichert. Wenn ich in meinem Programm auf einen button klicke bekomme ich seinen Namen.


Button eingang = (Button)tempy.Parent.GetChildAtPoint(childpointeingang);

Der Name ist: eingang0
Jetzt möchte ich z.B. den EndButton dieser Verbindung aus meiner XML Datei auslesen. Wenn du meine XML File anschaust, siehst du, dass eingang0 in einer Verbindung steht. Jetzt ist meine Frage. Wie schaff ich es jetzt den dazugehöreigen Endbutton auszulesen aus meiner xml file? Ich hoffe jetzt ist es verständlich ^^
Mfg cole

A
254 Beiträge seit 2007
vor 16 Jahren

Hallo,

muss weg. Deshalb in aller kürze.

Dursuch doch die Liste mit Verbindungs-Objekten und Vergleich den string, der Eigenschaft Endbutton mit eingang.Text. Wenn gleich, hast Du das richtige Objekt gefunden und kannst die restlichen Eigenschaften (StartpointX, StartpointY ...) auslesen.

Schau heute abend nochmal rein ...