AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ntElement auslesen

Ein Thema von Garfield · begonnen am 10. Mär 2014 · letzter Beitrag vom 10. Mär 2014
Antwort Antwort
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#1

ntElement auslesen

  Alt 10. Mär 2014, 17:01
Hallo, bei einem Request bekomme ich ein XML-Dokument wie folgt zurück:

Code:
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <s:Body>
    <u:GetStatusInfoResponse xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1">
      <NewConnectionStatus>Connected</NewConnectionStatus>
      <NewLastConnectionError>ERROR_NONE</NewLastConnectionError>
      <NewUptime>33548</NewUptime>
    </u:GetStatusInfoResponse>
  </s:Body>
</s:Envelope>'
Bisher hatte ich die Datei als String übernommen, die Strings "NewConnectionStatus", "NewLastConnectionError" und "NewUptime" gesucht und die Werte extrahiert. Ich möchte dies jedoch über XML sauber auslesen.

Mit

aNode := aXMLDoc.ChildNodes['s:Envelope'].ChildNodes['s:Body'].ChildNodes['u:GetStatusInfoResponse'];

komme ich an den Knoten. Jedoch kann ich den Wert

Result.ConnectionStatus := aNode.ChildNodes['NewConnectionStatus'].Text;

nicht auslesen, da der Knoten vom Typ "ntElement" ist. Wie komme ich an den Wert "Connected".
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof

Geändert von Garfield (10. Mär 2014 um 18:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#2

AW: ntElement auslesen

  Alt 10. Mär 2014, 17:25
Der erste ChildNode darin is nicht zufällig ein Text?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#3

AW: ntElement auslesen

  Alt 10. Mär 2014, 18:33
Entschuldigung. Quote war der falsche Tag. Code ist besser. Es kommt mir auf die drei Childes an:

Code:
      <NewConnectionStatus>Connected</NewConnectionStatus>
      <NewLastConnectionError>ERROR_NONE</NewLastConnectionError>
      <NewUptime>33548</NewUptime>
Ich dachte auch, das das Text wäre. Aber

aNode.ChildNodes['NewConnectionStatus'].IsTextElement

ist False und

aNode.ChildNodes['NewConnectionStatus'].NodeType

ist ntElement.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#4

AW: ntElement auslesen

  Alt 10. Mär 2014, 18:53
aNode.ChildNodes['NewConnectionStatus'].ChildNodes[0].IsTextElement <= der erste ChildNode

Das ist nunmal ein <Element>, auch wenn je nach Konfiguration und/oder XMLLib der Text auch über den Elternknoten ausgelesen werden kann.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (10. Mär 2014 um 18:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#5

AW: ntElement auslesen

  Alt 10. Mär 2014, 19:46
Code:
<NewConnectionStatus>Connected</NewConnectionStatus>
hat kein Child. Da gibt es "eine Exception der Klasse EListError mit der Meldung 'Listenindex überschreitet das Maximum (0)' aufgetreten". Sieht fast so aus, als müsste ich doch mit TStrings erledigen.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#6

AW: ntElement auslesen

  Alt 10. Mär 2014, 22:19
Hmmmm, dann muß die Lib den ntText aber aufgelöst haben und dann müsste der über .Text zugänglich sein.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#7

AW: ntElement auslesen

  Alt 10. Mär 2014, 22:55
Ich habe die XMLIntf in den uses. Da ist der Text ein leerer String. Aber Localname und XML zeigen, dass es das richtige Child ist. Dein himiXML zeigt in der Demo den Typ Element und den Wert an. In Bild ist es aber ein anderes Beispiel. Vielleicht liegt es am IXMLNode. Das werde ich mir morgen mal ansehen.
Miniaturansicht angehängter Grafiken
himixml.png   node.png  
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof

Geändert von Garfield (10. Mär 2014 um 23:21 Uhr)
  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 11:47 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