Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Auslesen von Werten in einer XML (https://www.delphipraxis.net/157180-auslesen-von-werten-einer-xml.html)

keine_ahnung 1. Jan 2011 21:24

Auslesen von Werten in einer XML
 
Hallo
hab mal wieder ein problem, dieses mal steh ich so richtig auf dem Schlauch.
ich hab eine XML-Datei und würde gerne die Werte auslesen um sie weiter zu benutzen.
Hier die XML-Datei.

Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Tour>
    <RouteOptions>
        <NaviMode value="motorbike"/>
        <OptimizationMode value="short"/>
        <TTIBypass mode="avoid" calculation="automatic"/>
        <RoadUsageTypes>
            <MotorWays mode="avoid"/>
            <TollRoads mode="avoid"/>
            <SpecialChargeRoads mode="avoid"/>
            <Ferries mode="avoid"/>
            <Tunnels mode="use"/>
            <CarTrains mode="use"/>
            <SeasonalRestrictedRoads mode="use"/>
            <TimeRestrictedRoads mode="use"/>
            <UnpavedRoads mode="avoid"/>
            <IPDRoads mode="use"/>
            <TrafficFlowInfo mode="use"/>
        </RoadUsageTypes>
        <TravelSpeeds>
            <Vehicle unit="km_h" speed="80.0">
                <MotorWay unit="km_h" speed="120.0"/>
                <PedestrianArea unit="km_h" speed="7.2"/>
            </Vehicle>
            <Bicycle unit="km_h" speed="14.4"/>
            <Pedestrian unit="km_h" speed="3.6"/>
        </TravelSpeeds>
    </RouteOptions>
    <Start>
        <Country/>
        <State/>
        <Zip/>
        <City name="NeuePosition 1"/>
        <Street/>
        <SideStreet/>
        <HouseNumber/>
        <Coordinates mercatory="6280369" mercatorx="1045711" longitude="9.4043" latitude="49.07386"/>
    </Start>
    <Destination>
        <Country/>
        <State/>
        <Zip/>
        <City name="NeuePosition 2"/>
        <Street/>
        <SideStreet/>
        <HouseNumber/>
        <Coordinates mercatory="6302766" mercatorx="991959" longitude="8.9209" latitude="49.20564"/>
    </Destination>
</Tour>
Wie komme ich an die longitude und latitude ran?
Würde gerne diese 2 Werte in eine Listbox schreiben.
Ist das möglich?
Primär interessiert mich wie ich auf diese Werte zugreifen kann.
Kann mir jemand einen Tipp bzw. ein Beispiel bzw. Tutorien nennen?
Würde mich sehr freuen.
Beste Grüße
chris

haentschman 1. Jan 2011 21:28

AW: Auslesen von Werten in einer XML
 
Hallo...

am besten benutzt du eine XML Biblothek.
- himXML http://www.delphipraxis.net/130751-h...-himix-ml.html
- wenn du die Jedies hast JvSimple XML

...beschäftige dich mal damit und wenn du dann konkrete Fragen bei der Umsetzung hast...nachfragen :zwinker:

Die Muhkuh 1. Jan 2011 21:48

AW: Auslesen von Werten in einer XML
 
Delphi hat von zu Hause aus auch eine Möglichkeit auf XML zuzugreifen: TXMLDocument. Spart weitere Komponentenlibs.

himitsu 1. Jan 2011 22:16

AW: Auslesen von Werten in einer XML
 
http://www.delphipraxis.net/82664-op...-tutorial.html
http://www.delphipraxis.net/7356-xml-tutorial.html

Das OpenXML-Tut kann man auch Teilweise auf MSXML (TXMLDocument / IXMLDocument / IXMLDOMDocument) anwenden.

haentschman 1. Jan 2011 22:54

AW: Auslesen von Werten in einer XML
 
Zitat:

Zitat von Die Muhkuh (Beitrag 1071702)
Delphi hat von zu Hause aus auch eine Möglichkeit auf XML zuzugreifen: TXMLDocument. Spart weitere Komponentenlibs.

...hab ich mit Absicht nicht erwähnt, da ich schon bei den einfachsten Sachen mit ganz blöden Fehlern (interne Speicherverwaltung) zu kämpfen hatte und die Bibliothek sehr komplex ist.

Die Muhkuh 2. Jan 2011 01:32

AW: Auslesen von Werten in einer XML
 
Für das bisschen da oben sollte es reichen :)

haentschman 2. Jan 2011 08:47

AW: Auslesen von Werten in einer XML
 
Moin...

das war ja das Problem... eben nicht. Ich habe es nicht geschafft 2 Knoten (auch wenn es der selbe war) hintereinander auszulesen. Jedesmal nach dem ersten Lesen eines Knotens kam die Meldung "kein aktives XML Document".
nach 3 Stunden hab ich genervt aufgegeben, da auch die Recherche zu diesem Problem nichts hervorbrachte.

keine_ahnung 2. Jan 2011 18:05

AW: Auslesen von Werten in einer XML
 
Hallo,
da bin ich wieder und ich hab mich damit etwas näher damit auseinander gesetzt.
Zuerst einmal herzlichen Dank für die Hilfe.

hab das hauseigene XMLDocument benutzt. Im ganzen macht es das was ich eigenltich möchte, nur kommt eine Fehlermeldung "Variante des Typ(Null) konnte nicht in Typ (String)konvertiert werden"
Könnte mir bitte jemand behilflich sein und mir sagen, wo der Fehler versteckt ist?
Ich hab eine Vermutung, wenn die Datei durchsucht wurde und keine lon bzw lat mehr da ist bringt er eine Fehlermeldung ist das so korrekt?

Code:
procedure TForm1.Button3Click(Sender: TObject);
var i : Word;
begin
  XMLDocument2.Active:= true;
  for i := 0 to XMLDocument2.DocumentElement.ChildNodes['Destination'].ChildNodes.Count -1 do
    Begin
      Listbox1.Items.Add(XMLDocument2.DocumentElement.ChildNodes[i].Attributes['lon']);
      Listbox2.Items.Add(XMLDocument2.DocumentElement.ChildNodes[i].Attributes['lat']);
    end;
end;
und hier die verwendete GPX bzw XML datei

Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gpx>
    <wpt lon="9.3438720703125" lat="48.90444878143716">
        <ele>148.0</ele>
        <time>2011-01-02T14:23:31.234Z</time>
        <name>NeuePosition 1</name>
    </wpt>
    <wpt lon="8.909912109375" lat="49.005447494058096">
        <ele>313.0</ele>
        <time>2011-01-02T14:24:51.187Z</time>
        <name>NeuePosition 2</name>
    </wpt>
    <wpt lon="8.778076171875" lat="48.72358515157852">
        <ele>313.0</ele>
        <time>2011-01-02T14:24:51.187Z</time>
        <name>NeuePosition 3</name>
    </wpt>
</gpx>

FrankJ28 2. Jan 2011 18:30

AW: Auslesen von Werten in einer XML
 
Hallo,
Du iterierst durch die Knoten "Destination", in deinem Beispiel gibt es den Knoten nicht. Eigentlich dürfte deine Schleife nicht durchlaufen werden. Was sagt denn dein Debugger?
Ciao
Frank

keine_ahnung 2. Jan 2011 19:11

AW: Auslesen von Werten in einer XML
 
:wall:
Hallo FrankJ28,
danke für den hinweis, das war ein Knoten von der XML Datei von oben.
der Debugger läuft 3 mal die Schleife durch bringt dann die Fehlermeldung wenn man die Fehlermeldung weg klickt erscheint in den Listboxen die Werte.
Hab "Destination" in "wpt" geändert und es kommt keine Fehlermeldung mehr
Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:27 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