AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi OpenXML - Ganz einfach einen Wert auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

OpenXML - Ganz einfach einen Wert auslesen

Ein Thema von nytaiceman · begonnen am 15. Nov 2006 · letzter Beitrag vom 15. Nov 2006
Antwort Antwort
nytaiceman

Registriert seit: 15. Dez 2005
Ort: Schweiz, Bern
58 Beiträge
 
Delphi XE3 Professional
 
#1

OpenXML - Ganz einfach einen Wert auslesen

  Alt 15. Nov 2006, 13:14
Hallo zusammen,

ich habe Delphi PE2005 und muss deshalb auf eine XML Alternative ausweichen.
Etliche Male wurde OpenXML erwähnt, dies habe ich nun installiert.

Leider verstehe ich bei den examples nur Bahnhof! Bei den Tutorials, welche online sind, wird von einer älteren Version ausgegangen... Wie auch immer, ich habe keine Ahnung wie ich einen Wert aus einer xml Datei herausbekomme:

Die .xml Datei sieht wie folgt aus (Ist eigentlich eine .desc Datei eines BF2 Maps ):
Zitat:
XML-Code:
<map>
<name> Ebel_es_Saqi </name>
<briefing locid="BRIEFING TEY"</briefing>
<music> common/sound/menu/music/load_MEC_music.ogg </music>
<modes>
<mode type="gpm_cq">
<maptype ai="1" players="16" type="doubleassault" locid="GAMEMODE_DESCRIPTION_doubleassault">Unlocalized test for this mode on this map</maptype>
<maptype players="32" type="headon" locid="GAMEMODE_DESCRIPTION_headon">Unlocalized test for this mode on this map</maptype>
<maptype players="64" type="headon" locid="GAMEMODE_DESCRIPTION_headon">Unlocalized test for this mode on this map</maptype>
</mode>
</modes>
</map>

Ich möchte nun eigentlich folgendes umsetzen:

Laden der Datei:
'C:\example.xml'

Auslesen des Namens in eine Variable:
MapName :=
--> Also 'Ebel_es_Saqi'

Ich weiss das es nicht gerne gesehen wird, wenn ein Fragesteller GAR KEINEN Sourcecode beilegt. Aber ich verstehe leider überhaupt nicht, wie ich überhaupt beginnen soll...

!VIELEN DANK SCHON MAL IM VORAUS!
  Mit Zitat antworten Zitat
Neuromancer

Registriert seit: 8. Aug 2003
62 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: OpenXML - Ganz einfach einen Wert auslesen

  Alt 15. Nov 2006, 14:16
Hallo,

das OpenXML-Package folgt sehr eng dem DOM-Level-1-Core des W3C, wie auch dem DOM-Level-2-Core vom 7. März 2000.

Das heißt, du kannst also auf alles Wissen bezüglich XML-Implementation zurückgreifen, das sich am DOM orientiert. Hierzu zählen zum Beispiel Xerces, SAX oder auch die Microsoft XML Core Services. Oder etwas verständlicher ausgedrückt: Alle Code-Beispiele, die hier und in anderen Foren bezüglich SAX oder des MSXML-Parsers gepostet wurden, sollten sich relativ einfach an OpenXML anpassen lassen.

Du brauchst:
  • TDomDocument
  • TDomNode oder wahlweise TDomElement
  • je nach gusto: XPath (du kannst aber auch durch die Knoten iterieren)

http://www.w3.org/DOM/

Gruß
  Mit Zitat antworten Zitat
nytaiceman

Registriert seit: 15. Dez 2005
Ort: Schweiz, Bern
58 Beiträge
 
Delphi XE3 Professional
 
#3

Re: OpenXML - Ganz einfach einen Wert auslesen

  Alt 15. Nov 2006, 16:55
@Neuromancer
Ich muss zwar zugeben, das ich nicht die Hälfte von den angebenen und gelesenen Informationen verstanden habe aber es micht inspiriert. Folgende Lösung habe ich nun geschrieben:

Als erstes natürlich einbinden der OpenXML Dateien (Utilities und XDOM3_2)
Danach auf mein Form die Komponenten TDOMImplementation und TXMLToDomParser gezogen.
Bei TXMLToDOmParser muss im Objektinspektor unter "DOMImpl" der Name "DomImplementation1" gesetzt werden.

Im Code habe ich dann folgendes geschrieben:
Delphi-Quellcode:
uses
  XDom_3_2;

procedure TForm1.Button1Click(Sender: TObject);
var
  xmlDoc : TDomDocument;
  XmlChild1, XmlChild2 : TDomElement;

begin
  // = XML Einlesen (Resp. .desc File eines Battlefield 2 Maps)
    xmlDoc := XmlToDomParser1.FileToDom('C:\example.desc');

  // = Erstes Child finden
    XmlChild1 := XmlDoc.FindFirstChildElement;
    ShowMessage(XmlChild1.GetTagName); // = Gibt den Namen des ersten Child aus

  // = Vom ersten Child aus, das nächste finden
    XmlChild2 := XmlChild1.FindFirstChildElement;
    ShowMessage(XmlChild2.GetTagName); // = Gibt den Namen des ersten Child unterhalb des ersten Child

  // = Ausgabe des Inhalts von Child2
    ShowMessage(XmlChild2.TextContent);
end;
Somit ist es mir möglich einen Wert eines Nodes herauszulesen.
Soweit so gut

Kann ich nicht direkt auf den Wert eines Nodes zu greifen, wenn ich dessen Name kenne?
Also zB
Child1 \ Child2 = Wert
MAP . NAME = Wert

Danke für die weitere Unterstützung.

Gruess Ice
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz