Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » XML-Configfile lesen und Werte überschreiben.

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
27.09.2006, 09:16 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


noch nicht ganz verstanden...

ist es die Memberfunktion GetBuffer von CString die du suchst?



Zitat:

Nimmt man für große XML Files nicht Long Dong XML ?



--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
27.09.2006, 09:25 Uhr
ao

(Operator)


Also, ich habs nicht ausprobiert, aber nach der Online-Doku würde ich sagen, es geht so:

Du brauchst zuerst ein TiXmlDocument-Objekt, da rein lädst du das File.

Über

C++:
TiXmlElement * pRootElement = document.RootElement();

steigst du in den Baum ein und hangelst dich über die Child-Sibling-Parent-Navigation in TiXmlNode bis zu dem gesuchten Knoten durch. Das geht, weil Element von Node abgeleitet ist.

Dann fragst du den Wert ab mit

C++:
CString value = pNode->Value();


und setzt ihn mit

C++:
CString value = "Hallo";
pNode->Setvalue ((LPCTSTR) value);



ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
27.09.2006, 10:12 Uhr
~Sabine
Gast


@Windalf: Ich möchte einfach gerne den Wert (vom XML-File) lesen um diesen dann zu verwenden. z.B. um den Wert in einem Edit-Feld auf dem Dialog auszugeben und meine Programmeinstellungen vorzunehmen.


bekomme so den Wert, aber weiss nicht, ob dass korrekt ist. Kann das jemand mal anschauen?

C++:
TiXmlDocument doc("conf.xml");
TiXmlHandle docH(&doc);

TiXmlElement* element = docH.FirstChildElement("CONFIG").FirstChildElement("GLOBAL").FirstChildElement("DIALOG_TEST").FirstChildElement("TITLE").Element();

CString szWert = element->GetText();




@ao:

Zitat von ao:
Über

C++:
TiXmlElement * pRootElement = document.RootElement();

steigst du in den Baum ein und hangelst dich über die Child-Sibling-Parent-Navigation in TiXmlNode bis zu dem gesuchten Knoten durch. Das geht, weil Element von Node abgeleitet ist.


Wie meinst du das? Wie macht man das?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
27.09.2006, 10:34 Uhr
ao

(Operator)



Zitat:
FirstChildElement("GLOBAL").FirstChildElement("DIALOG_TEST")

Das versteh ich nicht, DIALOG_TEST ist doch kein Kind von GLOBAL, sondern ein Geschwister ("Sibling"), demnach müsste es so gehen:

C++:
TiXmlElement* element = docH.FirstChildElement("CONFIG").FirstChildElement("DIALOG_TEST").FirstChildElement("TITLE").Element();


Mit Durchhangeln meinte ich aber genau das, diese FirstChildElement-Orgie.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
27.09.2006, 12:29 Uhr
~Sabine
Gast



Zitat von ao:

Das versteh ich nicht, DIALOG_TEST ist doch kein Kind von GLOBAL, sondern ein Geschwister ("Sibling")


Ups, das ist mein Fehler. Ist vermutlich beim Kopieren geschehen. :-(

aber wie ist das vorgehen mit:

Zitat von ao:

TiXmlElement * pRootElement = document.RootElement();


und

Zitat von ao:

CString value = pNode->Value();



Gruss Sabine
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
27.09.2006, 13:09 Uhr
ao

(Operator)


Kennst du diese Doku-Seite?

www.grinninglizard.com/tinyxmldocs/index.html

Da ist die ganze Klassenhierarchie dokumentiert. TiXmlElement ist abgeleitet von TiXmlNode, und Node enthält die ganze Baum-Navigation (Iterieren über Kinder, Iterieren über Geschwister, Auffinden von Kindern oder Geschwistern nach Namen usw.).

D.h. du kannst entweder vom Elternknoten aus die Kinder absuchen (über FirstChild und IterateChildren) oder von einem der Kinder aus die Geschwister (über NextSibling), das ist Geschmackssache.

Mit jedem Knoten, den du dabei erhältst, kannst du einen Downcast auf TiXmlElement versuchen, aber Vorsicht, das kann schiefgehen, auch andere Klassen sind von Node abgeleitet. Wenn der Downcast klappt, kommst du über Value () an den Wert.

Wenn du jetzt nur Bahnhof verstehst, solltest du erst noch ein bisschen C++ und OO lernen und dann weiterprogrammieren.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
27.09.2006, 13:15 Uhr
~Sabine
Gast


@ao: Danke. Hast mir sehr geholfen.

Gruss Sabine
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: