Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.11.2011, 23:36
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию XML

Помогите разобраться с парсингом
вот нашол пример

Код:
XMLDocument1.LoadFromFile('http://newyorg.myminicity.com/xml');
XMLDocument1.Active := true;
Edit1.Text := XMLDocument1.DocumentElement.ChildNodes['population'].Text;
Edit2.Text := VarToStr(XMLDocument1.DocumentElement.ChildNodes['bases'].Attributes['ind']);
Edit3.Text := VarToStr(XMLDocument1.DocumentElement.ChildNodes['bases'].Attributes['tra']);
Edit4.Text := VarToStr(XMLDocument1.DocumentElement.ChildNodes['bases'].Attributes['sec']);
Edit5.Text := VarToStr(XMLDocument1.DocumentElement.ChildNodes['bases'].Attributes['env']);
XMLDocument1.Active := false;

а мне надо свой xml распарсить пытаюсь это зделать так

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
   XMLDocument1.LoadFromFile('1.xml');
   XMLDocument1.Active := true;
   Memo1.Text:=XMLDocument1.XML.Text;

   XMLDocument1.Active := false;
end;

но сразу выскакивает ошибка

"В текстовом комментарии обнаружен недопустимый знак"

подскажите пожалуйста как сделать правильно
Ответить с цитированием
  #2  
Старый 05.11.2011, 23:43
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

У меня очки дальновидения запотели, плохо вижу открываемый файл.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 06.11.2011, 00:03
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

извеняюсь вот фаил
Вложения
Тип файла: rar 1.rar (1.1 Кбайт, 3 просмотров)

Последний раз редактировалось Gudzik11, 06.11.2011 в 00:08.
Ответить с цитированием
  #4  
Старый 06.11.2011, 00:12
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Пока, я вижу HTML файл переименованный в XML.

Вот простой пример:
Код:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<WasabiXML version="1.2">

  <skininfo>
    <version>1.0</version>
    <name>Winamp5 Base Skin</name>
    <comment>Please feel free to use this skin as a reference point to build your new Winamp5 skins.</comment>
    <author gaybag="bartibartman">Sven Kistner</author>
    <email>sven@metrix.de</email>
    <homepage>http://www.winamp.com</homepage>
    <screenshot>screenshot.png</screenshot>
  </skininfo>

  <include file="xml/color-presets.xml"/>
  <include file="xml/system-colors.xml"/>
  <include file="standardframe/standardframe.xml" />
  <include file="titlebar/titlebar.xml" />
  <include file="xml/player.xml"/>
  <include file="xml/pledit.xml"/>
  <include file="xml/ml.xml"/>
  <include file="xml/vis.xml"/>
  <include file="xml/video.xml"/>
  <include file="xml/notifier.xml"/>
  <include file="about/about.xml"/>

</WasabiXML>
сравни со своим файлом.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 06.11.2011 в 00:21.
Ответить с цитированием
  #5  
Старый 06.11.2011, 00:21
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

Скачивал я так
Код:
 GetDir(0,s);
    memo2.Text:=Utf8ToAnsi(IdHTTP1.Get('http://xml.weather.co.ua/1.2/forecast/19?dayf=5&userid=yoursite_com'));
    Memo2.Text:=Memo1.Text + Memo2.Text + Memo3.Text ;
    Memo2.Text:=Replace(Memo2.Text,'<?xml version="1.0" encoding="UTF-8"?>','');
    Memo2.Lines.SaveToFile(s+'\1.xml');
Ответить с цитированием
  #6  
Старый 06.11.2011, 00:23
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Ну и получил ерунду. Зачем Replace использовал?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 06.11.2011, 00:31
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

я в memo1 добовлял
Код:
<head>
<meta http-equiv="Content-Type" 
content="text/html; 
charset=windows-1251" />
<title>Прогноз погоды</title>
</head>
<body>

а этот кусочек остался <?xml version="1.0" encoding="UTF-8"?>
вот я и решил что он не кчиму

Последний раз редактировалось lmikle, 06.11.2011 в 02:04.
Ответить с цитированием
  #8  
Старый 06.11.2011, 00:38
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

а xml может быть только в utf-8
как тогда русские буквы нормально отображать?

Подскажи как быть?
Ответить с цитированием
  #9  
Старый 06.11.2011, 00:47
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Порылся в XML-файлах, попался такой:
Код:
<?xml version="1.0" encoding="windows-1251"?>
<ybarmail>
<box name = "name@yandex.ru" count = "17" />
</ybarmail>
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 06.11.2011 в 01:00.
Ответить с цитированием
  #10  
Старый 06.11.2011, 01:02
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

вот это уже xml ?
PHP код:
<?xml version="1.0" encoding="UTF-8"?><forecast version="1.2" last_updated="Sat, 05 Nov 2011 22:50:17 +0200">
    <url>https://weather.co.ua/show/?19</url>
    <city id="19">
        <name>�������</name>
        <name_en>Kharkiv</name_en>
        <region>
            <name>����������� �������</name>
            <name_en>Kharkiv region</name_en>
        </region>
        <country id="804">
            <name>�������</name>
            <name_en>Ukraine</name_en>
        </country>
    </city>
    <current last_updated="Sat, 05 Nov 2011 22:15:03 +0200" expires="Sat, 05 Nov 2011 22:50:03 +0200">
        <time>Sat, 05 Nov 2011 22:00:00 +0200</time>
        <cloud>10</cloud>
        <pict>_1_moon_cl.gif</pict>
        <t>+3</t>
        <t_flik>0</t_flik>
        <p>773</p>
        <w>3</w>
        <w_gust>0</w_gust>
        <w_rumb>70</w_rumb>
        <h>75</h>
    </current>
    <forecast>
        <day date="2011-11-06" hour="3">
            <cloud>10</cloud>
            <pict>_1_moon_cl.gif</pict>
            <ppcp>10</ppcp>
            <t>
                <min>1</min>
                <max>3</max>
            </t>
            <p>
                <min>756</min>
                <max>758</max>
            </p>
            <wind>
                <min>2</min>
                <max>4</max>
                <rumb>90</rumb>
            </wind>
            <hmid>
                <min>66</min>
                <max>68</max>
            </hmid>
            <wpi>83</wpi>
        </day>
        <day date="2011-11-06" hour="9">
            <cloud>10</cloud>
            <pict>_1_sun_cl.gif</pict>
            <ppcp>5</ppcp>
            <t>
                <min>-2</min>
                <max>0</max>
            </t>
            <p>
                <min>757</min>
                <max>759</max>
            </p>
            <wind>
                <min>2</min>
                <max>4</max>
                <rumb>90</rumb>
            </wind>
            <hmid>
                <min>64</min>
                <max>66</max>
            </hmid>
            <wpi>83</wpi>
        </day>
        <day date="2011-11-06" hour="15">
            <cloud>0</cloud>
            <pict>_0_sun.gif</pict>
            <ppcp>0</ppcp>
            <t>
                <min>0</min>
                <max>2</max>
            </t>
            <p>
                <min>757</min>
                <max>759</max>
            </p>
            <wind>
                <min>2</min>
                <max>4</max>
                <rumb>53</rumb>
            </wind>
            <hmid>
                <min>45</min>
                <max>47</max>
            </hmid>
            <wpi>85</wpi>
        </day>
        <day date="2011-11-06" hour="21">
            <cloud>5</cloud>
            <pict>_0_moon.gif</pict>
            <ppcp>0</ppcp>
            <t>
                <min>-4</min>
                <max>-2</max>
            </t>
            <p>
                <min>758</min>
                <max>760</max>
            </p>
            <wind>
                <min>1</min>
                <max>3</max>
                <rumb>58</rumb>
            </wind>
            <hmid>
                <min>58</min>
                <max>60</max>
            </hmid>
            <wpi>88</wpi>
        </day>
        <day date="2011-11-07" hour="3">
            <cloud>10</cloud>
            <pict>_1_moon_cl.gif</pict>
            <ppcp>0</ppcp>
            <t>
                <min>-7</min>
                <max>-5</max>
            </t>
            <p>
                <min>758</min>
                <max>760</max>
            </p>
            <wind>
                <min>1</min>
                <max>3</max>
                <rumb>63</rumb>
            </wind>
            <hmid>
                <min>63</min>
                <max>65</max>
            </hmid>
            <wpi>87</wpi>
        </day>
        <day date="2011-11-07" hour="9">
            <cloud>5</cloud>
            <pict>_0_sun.gif</pict>
            <ppcp>0</ppcp>
            <t>
                <min>-4</min>
                <max>-2</max>
            </t>
            <p>
                <min>759</min>
                <max>761</max>
            </p>
            <wind>
                <min>1</min>
                <max>3</max>
                <rumb>95</rumb>
            </wind>
            <hmid>
                <min>55</min>
                <max>57</max>
            </hmid>
            <wpi>87</wpi>
        </day>
        <day date="2011-11-07" hour="15">
            <cloud>0</cloud>
            <pict>_0_sun.gif</pict>
            <ppcp>0</ppcp>
            <t>
                <min>-1</min>
                <max>1</max>
            </t>
            <p>
                <min>758</min>
                <max>760</max>
            </p>
            <wind>
                <min>0</min>
                <max>2</max>
                <rumb>128</rumb>
            </wind>
            <hmid>
                <min>36</min>
                <max>38</max>
            </hmid>
            <wpi>92</wpi>
        </day>
        <day date="2011-11-07" hour="21">
            <cloud>0</cloud>
            <pict>_0_moon.gif</pict>
            <ppcp>0</ppcp>
            <t>
                <min>-4</min>
                <max>-2</max>
            </t>
            <p>
                <min>758</min>
                <max>760</max>
            </p>
            <wind>
                <min>0</min>
                <max>2</max>
                <rumb>172</rumb>
            </wind>
            <hmid>
                <min>53</min>
                <max>55</max>
            </hmid>
            <wpi>90</wpi>
        </day>
        <day date="2011-11-08" hour="3">
            <cloud>0</cloud>
            <pict>_0_moon.gif</pict>
            <ppcp>0</ppcp>
            <t>
                <min>-5</min>
                <max>-3</max>
            </t>
            <p>
                <min>758</min>
                <max>760</max>
            </p>
            <wind>
                <min>1</min>
                <max>3</max>
                <rumb>216</rumb>
            </wind>
            <hmid>
                <min>50</min>
                <max>52</max>
            </hmid>
            <wpi>88</wpi>
        </day>
        <day date="2011-11-08" hour="9">
            <cloud>10</cloud>
            <pict>_1_sun_cl.gif</pict>
            <ppcp>0</ppcp>
            <t>
                <min>-3</min>
                <max>-1</max>
            </t>
            <p>
                <min>757</min>
                <max>759</max>
            </p>
            <wind>
                <min>2</min>
                <max>4</max>
                <rumb>225</rumb>
            </wind>
            <hmid>
                <min>44</min>
                <max>46</max>
            </hmid>
            <wpi>85</wpi>
        </day>
        <day date="2011-11-08" hour="15">
            <cloud>0</cloud>
            <pict>_0_sun.gif</pict>
            <ppcp>0</ppcp>
            <t>
                <min>2</min>
                <max>4</max>
            </t>
            <p>
                <min>755</min>
                <max>757</max>
            </p>
            <wind>
                <min>4</min>
                <max>6</max>
                <rumb>225</rumb>
            </wind>
            <hmid>
                <min>38</min>
                <max>40</max>
            </hmid>
            <wpi>88</wpi>
        </day>
        <day date="2011-11-08" hour="21">
            <cloud>0</cloud>
            <pict>_0_moon.gif</pict>
            <ppcp>10</ppcp>
            <t>
                <min>-1</min>
                <max>1</max>
            </t>
            <p>
                <min>754</min>
                <max>756</max>
            </p>
            <wind>
                <min>4</min>
                <max>6</max>
                <rumb>225</rumb>
            </wind>
            <hmid>
                <min>52</min>
                <max>54</max>
            </hmid>
            <wpi>86</wpi>
        </day>
        <day date="2011-11-09" hour="3">
            <cloud>0</cloud>
            <pict>_0_moon.gif</pict>
            <ppcp>20</ppcp>
            <t>
                <min>0</min>
                <max>2</max>
            </t>
            <p>
                <min>751</min>
                <max>753</max>
            </p>
            <wind>
                <min>4</min>
                <max>6</max>
                <rumb>270</rumb>
            </wind>
            <hmid>
                <min>86</min>
                <max>88</max>
            </hmid>
            <wpi>85</wpi>
        </day>
        <day date="2011-11-09" hour="9">
            <cloud>20</cloud>
            <pict>_2_cloudy.gif</pict>
            <ppcp>20</ppcp>
            <t>
                <min>1</min>
                <max>3</max>
            </t>
            <p>
                <min>748</min>
                <max>750</max>
            </p>
            <wind>
                <min>4</min>
                <max>6</max>
                <rumb>298</rumb>
            </wind>
            <hmid>
                <min>76</min>
                <max>78</max>
            </hmid>
            <wpi>79</wpi>
        </day>
        <day date="2011-11-09" hour="15">
            <cloud>20</cloud>
            <pict>_2_cloudy.gif</pict>
            <ppcp>20</ppcp>
            <t>
                <min>4</min>
                <max>6</max>
            </t>
            <p>
                <min>748</min>
                <max>750</max>
            </p>
            <wind>
                <min>5</min>
                <max>7</max>
                <rumb>315</rumb>
            </wind>
            <hmid>
                <min>76</min>
                <max>78</max>
            </hmid>
            <wpi>80</wpi>
        </day>
        <day date="2011-11-09" hour="21">
            <cloud>15</cloud>
            <pict>_1_moon_cl.gif</pict>
            <ppcp>15</ppcp>
            <t>
                <min>1</min>
                <max>3</max>
            </t>
            <p>
                <min>749</min>
                <max>751</max>
            </p>
            <wind>
                <min>4</min>
                <max>6</max>
                <rumb>135</rumb>
            </wind>
            <hmid>
                <min>80</min>
                <max>82</max>
            </hmid>
            <wpi>83</wpi>
        </day>
        <day date="2011-11-10" hour="3">
            <cloud>10</cloud>
            <pict>_1_moon_cl.gif</pict>
            <ppcp>10</ppcp>
            <t>
                <min>-4</min>
                <max>-2</max>
            </t>
            <p>
                <min>0</min>
                <max>0</max>
            </p>
            <wind>
                <min>3</min>
                <max>5</max>
                <rumb>335</rumb>
            </wind>
            <hmid>
                <min>79</min>
                <max>81</max>
            </hmid>
            <wpi>99</wpi>
        </day>
        <day></day>
        <day></day>
        <day></day>
    </forecast>
</forecast>
и теперь выдаёт ошибку

raised exception class econvertError with message 'invalid utf-8 sequence at position 178'
Ответить с цитированием
  #11  
Старый 06.11.2011, 01:15
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Вот так открывает:
Код:
<?xml version="1.0" encoding="windows-1251"?>
<forecast version="1.2" last_updated="Sat, 05 Nov 2011 22:50:17 +0200"> 
<url>https://weather.co.ua/show/?19</url> 
...
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #12  
Старый 06.11.2011, 01:48
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

СПАСИБО ЗАРАБОТАЛО!
А не подскажешь как считать
PHP код:
<?xml version="1.0" 
encoding="windows-1251"?>
<forecast version="1.2" last_updated="Sat, 05 Nov 2011 23:26:00 +0200">
    <url>https://weather.co.ua/show/?19</url>
    <city id="19">
        <name>Харьков</name>
        <name_en>Kharkiv</name_en>
        <region>
            <name>Харьковская область</name>
            <name_en>Kharkiv region</name_en>
        </region>
        <country id="804">
            <name>Украина</name>
            <name_en>Ukraine</name_en>
        </country>
    </city>
    <current last_updated="Sat, 05 Nov 2011 22:45:03 +0200" expires="Sat, 05 Nov 2011 23:20:03 +0200">
        <time>Sat, 05 Nov 2011 22:30:00 +0200</time>
        <cloud>10</cloud>
        <pict>_1_moon_cl.gif</pict>
        <t>+3</t>
        <t_flik>0</t_flik>
        <p>773</p>
        <w>3</w>
        <w_gust>0</w_gust>
        <w_rumb>70</w_rumb>
        <h>70</h>
    </current>
<t>+3</t> вот отсюда

если к примеру из <url>https://weather.co.ua/show/?19</url> получить
эт я понял
Label8.CAPTION := XMLDocument1.DocumentElement.ChildNodes['url'].Text;
а вот из <t>+3</t> не знаю как
Ответить с цитированием
  #13  
Старый 06.11.2011, 02:06
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Никогда не занимался XML-ками.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #14  
Старый 06.11.2011, 02:07
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,093
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Примерно так-же, только надо идти на уровень вниз.
что-то типа (не проверял, так что только сама идея):
Код:
Label8.CAPTION := XMLDocument1.DocumentElement.ChildNodes['current'].ChildElement['t'].Text;
Ответить с цитированием
  #15  
Старый 06.11.2011, 02:16
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

спасибо всё работает
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:40.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025