|
#1
|
||||
|
||||
XML Files...
Здравствуйте!
Помогите написать парсер используя стд. компанент TXMLDocument XLM Файл: Код:
<MMWEATHER> <REPORT type="frc3"> <TOWN index="27612" sname="%CC%EE%F1%EA%E2%E0" latitude="56" longitude="38"> <FORECAST day="01" month="03" year="2010" hour="03" tod="0" predict="0" weekday="2"> <PHENOMENA cloudiness="3" precipitation="6" rpower="0" spower="0"/> <PRESSURE max="748" min="746"/> <TEMPERATURE max="-3" min="-1"/> <WIND min="3" max="5" direction="4"/> <RELWET max="99" min="97"/> <HEAT min="-5" max="-3"/> </FORECAST> <FORECAST day="01" month="03" year="2010" hour="09" tod="1" predict="0" weekday="2"> <PHENOMENA cloudiness="3" precipitation="6" rpower="0" spower="0"/> <PRESSURE max="747" min="745"/> <TEMPERATURE max="-2" min="0"/> <WIND min="4" max="6" direction="3"/> <RELWET max="99" min="97"/> <HEAT min="-5" max="-3"/> </FORECAST> <FORECAST day="01" month="03" year="2010" hour="15" tod="2" predict="0" weekday="2"> <PHENOMENA cloudiness="3" precipitation="4" rpower="0" spower="0"/> <PRESSURE max="744" min="742"/> <TEMPERATURE max="3" min="1"/> <WIND min="5" max="7" direction="3"/> <RELWET max="99" min="97"/> <HEAT min="-2" max="0"/> </FORECAST> <FORECAST day="01" month="03" year="2010" hour="21" tod="3" predict="0" weekday="2"> <PHENOMENA cloudiness="3" precipitation="4" rpower="0" spower="0"/> <PRESSURE max="742" min="740"/> <TEMPERATURE max="4" min="2"/> <WIND min="6" max="8" direction="3"/> <RELWET max="99" min="97"/> <HEAT min="-2" max="0"/> </FORECAST> </TOWN> </REPORT> </MMWEATHER> пытаюсь получить значение, а он возращает пустоту Код:
direction:=VarToStr(ChildNodes['TEMPERATURE'].Attributes['max']); [ iNewStar.Ru ] - Продам! Вопросы в ПМ |
#2
|
||||
|
||||
Код:
procedure TForm1.Button1Click(Sender: TObject); var Node : IXMLNode; Node2 : IXMLNode; i:integer; begin // в файле - твой xml XMLDocument1.LoadFromFile(ExtractFilePath(Application.ExeName)+'test.xml'); // Проходим по узлам вниз // для наглядности написал так, но можно и в одну строчку извратиться Node := XMLDocument1.Node; Node := Node.ChildNodes.Nodes['MMWEATHER']; Node := Node.ChildNodes.Nodes['REPORT']; Node := Node.ChildNodes.Nodes['TOWN']; // у тебя 4 узла с именем FORECAST // вот я и решил для каждого выдернуть значение макс. температуры for i:=0 to Node.ChildNodes.Count-1 do begin Node2 := Node.ChildNodes.Nodes[i]; // FORECAST Node2 := Node2.ChildNodes.Nodes['TEMPERATURE']; Memo1.Lines.Add( Node2.AttributeNodes.Nodes['max'].NodeValue ); end; end; Велик и могуч наш Object Pascal ! ICQ: 357-591-887 |
#3
|
||||
|
||||
Цитата:
Спс..большое! [ iNewStar.Ru ] - Продам! Вопросы в ПМ |