Показать сообщение отдельно
  #5  
Старый 27.03.2018, 04:38
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от LIONSMILE
...почему не читает значения из тэга <pos>?...
Видимо, нестандартная разметка xml, поскольку при методовом разборе тег содержит лишь комментарий типа <pos> xmlns="http://www.opengis.net/gml"></pos>, так и не понял, почему такое происходит, но можно "ручками" разобрать, кстати, там их несколько
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
 s:     string;
 i,j,b: integer;
begin
 XMLDocument1.LoadFromFile('yandex.txt');
 XMLDocument1.Active:= true;

 // Выдёргиваются данные первого тега <pos>
{
 s:= VarToStr(XMLDocument1.DocumentElement.ChildNodes.Nodes['GeoObjectCollection'].XML);
 j:= Pos('<pos>', s)+5;
 i:= Pos('</pos>',s);
 s:= Copy(s, j, i-j);
 j:= Pos(' ', s);
 Edit1.Text:= Copy(s,1,j-1);
 Edit2.Text:= Copy(s,j+1,(Length(s)-j)+1);
 }

 // Разбираются все
 for b := 0 to XMLDocument1.XML.Count-1 do
  with StringGrid1 do
   if Pos('<pos>', XMLDocument1.XML[b]) > 0 then
    begin
     RowCount:= RowCount+1;
     s:= XMLDocument1.XML[b];
     j:= Pos('<pos>', s)+5;
     i:= Pos('</pos>',s);
     s:= Copy(s, j, i-j);
     j:= Pos(' ', s);
     Cells[0,RowCount-1]:= Copy(s,1,j-1);
     Cells[1,RowCount-1]:= Copy(s,j+1,(Length(s)-j)+1);
    end;

 XMLDocument1.Active:= false;
end;
Ответить с цитированием