Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Einen Wert aus XML auslesen (https://www.delphipraxis.net/31217-einen-wert-aus-xml-auslesen.html)

Urmel 6. Okt 2004 09:16


Einen Wert aus XML auslesen
 
Hallo,

ich habe heute zum ersten mal eine XML-Datei vor mir und muss dort einen bestimten Wert auslesen.
Aber irgendwie blicke ich das XML Zeugs noch nicht :roll:
Ich muss aus dieser Datei:
Code:
<Net_x0020_Display_x0020_Systems_x0020_Runtime_x0020_Settings_x0020_file>
  <xs:schema id="Net_x0020_Display_x0020_Systems_x0020_Runtime_x0020_Settings_x0020_file" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="Net_x0020_Display_x0020_Systems_x0020_Runtime_x0020_Settings_x0020_file" msdata:IsDataSet="true" msdata:Locale="de-DE">
      <xs:complexType>
        <xs:choice maxOccurs="unbounded">
          <xs:element name="PADSRuntime" msdata:CaseSensitive="False">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="MonitorStatus" type="xs:string" minOccurs="0" />
                <xs:element name="KeepAliveTime" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <PADSRuntime>
    <MonitorStatus>OFF</MonitorStatus>
    <KeepAliveTime>10.06.2004 09:55:31</KeepAliveTime>
  </PADSRuntime>
</Net_x0020_Display_x0020_Systems_x0020_Runtime_x0020_Settings_x0020_file>
Denn MonitorStatus auslesen. Wer kann mir denn einen Denkanstoss geben?

Danke

alcaeus 6. Okt 2004 09:18

Re: Einen Wert aus XML auslesen
 
Hallo Urmel,

vielleicht hilft dir [user=Chakotay1308]Chris'[/user] XML-Tutorial weiter.

Greetz
alcaeus

Urmel 6. Okt 2004 09:21

Re: Einen Wert aus XML auslesen
 
Zitat:

Zitat von alcaeus
..vielleicht hilft dir [user=Chakotay1308]Chris'[/user] XML-Tutorial weiter...

Hallo alcaeus,

das habe ich schon gelesen. Aber irgendwie ist heute nicht mein Tag :wall:
Ich peile es einfach nicht :roll:

MathiasSimmack 6. Okt 2004 09:30

Re: Einen Wert aus XML auslesen
 
Schau mal ins erwähnte Tutorial unter dem Stichwort XPath. Dein Pfad müsste, wenn ich mich jetzt nicht arg verguckt habe
Code:
Net_x0020_Display_x0020_Systems_x0020_Runtime_x0020_Settings_x0020_file/PADSRuntime/MonitorStatus
lauten. Stichwort: "selectSingleNode", bzw. "selectNodes", usw.

Urmel 6. Okt 2004 09:56

Re: Einen Wert aus XML auslesen
 
So, ich habe es geschaft! Danke euch beiden.
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  xmlfile: string;
  Viewer: IXMLDOMNodeList;
begin
  xmlFile := 'PADSRuntime.xml';
  xmlDoc := CoDOMDocument40.Create;
  xmlDoc.setProperty('NewParser', true);
  if not FileExists(fAppPath + xmlFile) then
  begin
    ShowMessage('XML-Datei nicht gefunden');
  end
  else
  begin
    xmlDoc.load(fAppPath + xmlFile);
  end;
  if xmlDoc.parseError.errorCode <> 0 then
  begin
    MessageDlg('Die XML-Datei ist nicht korrekt!' + #13#10
      + 'Das Programm wird nun beendet.', mtError, [mbOK], 0);
    Application.Terminate;
  end;
  viewer := xmlDoc.documentElement.selectNodes('PADSRuntime/MonitorStatus');
  Label1.Caption := viewer.item[0].text; // Monitorstatus im Label anzeigen
end;
Ich hoffe das ist XML-Technich richtig?

MathiasSimmack 6. Okt 2004 12:56

Re: Einen Wert aus XML auslesen
 
Ich weiß nicht, was das hier
Zitat:

Zitat von Urmel
Delphi-Quellcode:
xmlDoc.setProperty('NewParser', true);

immer soll. Das ist jetzt nicht gegen dich, @Urmel, sondern allgemein. Man kann es auch weglassen. Ich müsste erst im PSDK bzw. XML-SDK nachschlagen, wozu man diese Eigenschaft eigentlich braucht. Aber in irgendeiner Situation (DTD? :gruebel:) gab es Probleme damit. Abgesehen davon hätte ich es so gelöst:
Delphi-Quellcode:
  if not FileExists(fAppPath + xmlFile) then
  begin
    ShowMessage('XML-Datei nicht gefunden');
    exit;
  end;

  xmlFile := 'PADSRuntime.xml';
  xmlDoc := CoDOMDocument40.Create;
  if(xmlDoc <> nil) then
  try
    xmlDoc.load(fAppPath + xmlFile);
    if xmlDoc.parseError.errorCode <> 0 then
    begin
      MessageDlg('Die XML-Datei ist nicht korrekt!' + #13#10
        + 'Das Programm wird nun beendet.', mtError, [mbOK], 0);
      Application.Terminate;
    end;

    viewer := xmlDoc.documentElement.selectNodes('PADSRuntime/MonitorStatus');
    if(viewer <> nil) then
      Label1.Caption := viewer.item[0].text; // Monitorstatus im Label anzeigen
  finally
    xmlDoc := nil;
  end;

Urmel 6. Okt 2004 13:06

Re: Einen Wert aus XML auslesen
 
Zitat:

Zitat von MathiasSimmack
...Das ist jetzt nicht gegen dich, @Urmel...

hihi.... In wirklichkeit möchtest Du mich doch nur wieder in mein Ei stecken oder in Was "Mupfel".

Ne, im Ernst: Ich bin ja für jeden Hinweiss dankbar umd dieses XML endlich zu verstehen. :thumb:

MathiasSimmack 7. Okt 2004 05:45

Re: Einen Wert aus XML auslesen
 
Nein! Ich hab´s auch in Chakotays MovieOrganizer (Demo und Tutorial) gesehen. In dem Fall gab es keine Probleme, aber in irgendeinem anderen Fall schon. Und irgendwo (entweder hat der Parser selbst gemeckert, oder es steht in der Hilfe zu MS-XML) ist es sogar nicht erlaubt, weil du sonst Schwierigkeiten hast.

Ich gucke noch mal nach. Aber das wird erst Nachmittag.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz