AGB  ·  Datenschutz  ·  Impressum  







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

Attribut auslesen..

Ein Thema von mtin · begonnen am 1. Mai 2007 · letzter Beitrag vom 3. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von mtin
mtin

Registriert seit: 8. Jun 2005
34 Beiträge
 
#1

Attribut auslesen..

  Alt 1. Mai 2007, 23:10
Hallo, ich versuche hier verzweifelt ein Attribut auszulesen und es will und will nich klappen -.-

xml:
XML-Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<rss version="2.0" xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
<channel>
<yweather:condition text="Fair" code="33" temp="7" date="Tue, 01 May 2007 10:20 pm CEST" />
</channel>
</rss>
(gekürtzt)


code:
Delphi-Quellcode:
xmldoc.LoadFromXML(weather);
xmldoc.Active:=true;
value:=xmldoc.DocumentElement.ChildNodes['channel'].ChildNodes['yweather:condition'].GetAttributeNS('temp','');
aber es kommt nur immer sowas wie kann nicht "null" in "string" konvertieren

was ist denn da nur los?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Attribut auslesen..

  Alt 1. Mai 2007, 23:54
Attribute liest man wie Knoten aus, nur mit einem @ davor.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von mtin
mtin

Registriert seit: 8. Jun 2005
34 Beiträge
 
#3

Re: Attribut auslesen..

  Alt 2. Mai 2007, 00:03
wie lese ich einen Knoten aus?
ChildNodes['bla'].Text?

und wohin soll das @?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Attribut auslesen..

  Alt 2. Mai 2007, 00:12
Vor das bla: '@bla'.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von mtin
mtin

Registriert seit: 8. Jun 2005
34 Beiträge
 
#5

Re: Attribut auslesen..

  Alt 2. Mai 2007, 00:20
hmmm...also ich blick da echt überhaupt nicht durch!

jetzt kommt die Meldung

Project raised exception class EOleException with message 'This name may not contain the ':' character:
yweather-->:<--@temp'.

bei der Zeile
value:=Form1.xmldoc.DocumentElement.ChildNodes['channel'].ChildNodes['yweather:condition'].ChildNodes['@temp'].Text;

und der rss Datei
http://xml.weather.yahoo.com/forecastrss?p=GMXX1930&u=c
( <yweather:condition text="Fair" code="33" temp="7" date="Tue, 01 May 2007 10:20 pm CEST" /> )
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Attribut auslesen..

  Alt 2. Mai 2007, 00:25
Die Eigenschaft ChildNodes sieht mir so aus, als wenn es eine Liste wäre. Also müsste da wohl irgendwie ein Zähler hin:
value:=Form1.xmldoc.DocumentElement.ChildNodes[i].Node['@temp'].Text; Oder so ähnlich. Aber dazu gibt es hier im Forum auch schon einen Thread. Benutz einfach mal die Suche.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von mtin
mtin

Registriert seit: 8. Jun 2005
34 Beiträge
 
#7

Re: Attribut auslesen..

  Alt 2. Mai 2007, 00:35
na mensch, nen bisschen rumprobiert hab ich auch schon -.-

ChildNodes funktioniert, sofern ich nur den Wert dieses Knotens will und nicht den WErt von nem Attribut
value:=Form1.xmldoc.DocumentElement.ChildNodes['channel'].ChildNodes['description'].Text
funktioniert z.b. wunderbar

und mit der Suche hab ich mich mittlerweile auch schon bestimmt ne stunde beschäftigt
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Attribut auslesen..

  Alt 2. Mai 2007, 08:18
Hallo,

so geht es:

Delphi-Quellcode:
var
  xnChannel, xnCondition: IXMLNode;
begin
  xnChannel := xmldoc.DocumentElement.ChildNodes['channel'];
  xnCondition := xnChannel.ChildNodes['condition'];
  ShowMessage(VarToStr(xnCondition.Attributes['temp']));
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von mtin
mtin

Registriert seit: 8. Jun 2005
34 Beiträge
 
#9

Re: Attribut auslesen..

  Alt 2. Mai 2007, 13:33
hm...danke das ihr euch alle solche Mühe macht, aber es geht trotzdem nicht

Result bleibt leer...

hier mal der Komplette Quelltext, einfach ein TXMLDocument aufs Form geknallt und dann müsste das doch gehen

Delphi-Quellcode:
function getWeather():string;
var weatherCheck:TidHTTP;
weather:string;
xnChannel, xnCondition: IXMLNode;
begin

try
  weatherCheck := TidHTTP.Create;
  //http://xml.weather.yahoo.com/forecastrss?p=GMXX1930&u=c
  weather := weatherCheck.Get('http://xml.weather.yahoo.com/forecastrss?p=GMXX1930&u=c');

  Form1.xmldoc.LoadFromXML(weather);
  Form1.xmldoc.Active:=true;
  xnChannel := Form1.xmldoc.DocumentElement.ChildNodes['channel'];
  xnCondition := xnChannel.ChildNodes['condition'];
  result := VarToStr(xnCondition.Attributes['temp']);

  weatherCheck.Free;
except
  result := 'could not retrieve weather data';
end;

end;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Attribut auslesen..

  Alt 3. Mai 2007, 07:04
Hallo,

mein Code-Beispiel war auf dein XML-Fragment aus Beitrag #1 zugeschnitten. Wenn du die Daten aus dem Feed verwendest, dann musst du darauf achten, dass <condition> kein direkter childNode von <channel> ist (rss/channel/item/condition):

Delphi-Quellcode:
var
  xnChannel, xnItem, xnCondition: IXMLNode;
begin
  xnChannel := xmldoc.DocumentElement.ChildNodes['channel'];
  xnItem := xnChannel.ChildNodes['item'];
  xnCondition := xnChannel.ChildNodes['condition'];
  ShowMessage(VarToStr(xnCondition.Attributes['temp']));
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:39 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