Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 04.02.2014
Сообщений: 26

Парсинг XML файла из Яндекс Метрики

23.07.2014, 20:50. Показов 2270. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Пишу, ради практики, небольшую прогу, которая будет отображать данные из щетчиков Яндекс Метрики.
Уже перерил кучу примеров, но не виходит обработать правильно XML - ответ из сервера.

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<doc xmlns="http://api.yandex.ru/metrika/">
<date2>20140723</date2>
<min>
<denial>0</denial>
<visits>6</visits>
<new_visitors_perc>0.8</new_visitors_perc>
<page_views>8</page_views>
<visit_time>41</visit_time>
<depth>1.3333</depth>
<new_visitors>4</new_visitors>
<visitors>5</visitors>
</min>
<max>
<denial>0</denial>
<visits>6</visits>
<new_visitors_perc>0.8</new_visitors_perc>
<page_views>8</page_views>
<visit_time>41</visit_time>
<depth>1.3333</depth>
<new_visitors>4</new_visitors>
<visitors>5</visitors>
</max>
<data count="1">
<row>
<wday>2</wday>
<denial>0</denial>
<visits>6</visits>
<new_visitors_perc>0.8</new_visitors_perc>
<page_views>8</page_views>
<date>20140723</date>
<visit_time>41</visit_time>
<depth>1.3333</depth>
<new_visitors>4</new_visitors>
<visitors>5</visitors>
<id>20140723</id>
</row>
</data>
<rows>1</rows>
<date1>20140723</date1>
<id>24286822</id>
<goals count="0"/>
<totals>
<denial>0</denial>
<visits>6</visits>
<new_visitors_perc>0.8</new_visitors_perc>
<page_views>8</page_views>
<visit_time>41</visit_time>
<depth>1.3333</depth>
<new_visitors>4</new_visitors>
<visitors>5</visitors>
</totals>
</doc>
А именно нужно обработать данные последнего блока <totals>, строки <visits>, <page_views>, <visitors>.
Подскажите пожалуйста, я бы без крайней надобности сюда бы не писал.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.07.2014, 20:50
Ответы с готовыми решениями:

Обработка json или xml ответа из Яндекс метрики
Все токены ID и пароли знаю. Когда вбиваю url с данными получаю ответ от яндекс метрики со статистикой. Он может быть и в json и в xml. Как...

Как реализовать парсинг позиций в Яндекс не через xml?
не подскажите как можно реализовать парсинг позиций в яндекс не через xml? Добавлено через 4 часа 32 минуты код реализации у меня...

Парсинг XML-файла с помощью LINQ to XML
Здрасивуйте. Трабл никак не могу понять в чем дело не могу считать инфу с XML login, getWorkersOUs надо записать в textBox а все c...

5
 Аватар для m@cChe
45 / 45 / 26
Регистрация: 15.05.2013
Сообщений: 226
Записей в блоге: 1
23.07.2014, 22:15
так?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  
                  private string _resultSearchObject;// результат ответа геокодера напирмер _resultSearchObject = geoCode.SearchObject("" + txtSerching.Text.Trim());
                  private XmlNode _notToFinde; //для проверки существования дочернего узла в возвращаемом ответе
 
 
                XmlDocument xd = new XmlDocument();
                xd.LoadXml(_resultSearchObject);
 
                XmlElement root = xd.DocumentElement;
  //тащим из узла <Locality>
                XmlNodeList GeoObjectTempLocality = xd.GetElementsByTagName("totals");
 
                //проверка существования xml узла
                _notToFinde = root.SelectSingleNode("visits"); //допустим visits
 
                if (_notToFinde == null)
                {
                    txtXMLAddress.Text = null;
 
                    foreach (XmlNode localityNode in GeoObjectTempLocality)
                    {
                        foreach (XmlNode childLocalityName in localityNode.ChildNodes)
                        {
                            switch (childLocalityName.Name)
                            {
                                case "visits":
                                    txtXMLAddress.Text = childLocalityName.FirstChild.InnerText;
                                    break;
                                case "page_views":
                                    txtXMLCity.Text = child.FirstChild.InnerText;
                                    break;
                                case "visitors":
                                    txtXMLCodeName.Text = child.FirstChild.InnerText;
                                    break;
                            }
                        }
                    }
                }
у меня все выводит в txtBox, я думаю Вы в коде разберётесь, все довольно подробно.
2
871 / 721 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
23.07.2014, 23:14
Leon11t,
Выводит все дочерние элементы блока <totals>
C#
1
2
3
4
5
6
7
8
9
public static void xmlWorker(XmlDocument xml)
        {
            XmlNode xmlNode = xml.GetElementsByTagName("totals").Item(0);
            
            foreach (XmlNode node in xmlNode.ChildNodes)
            {
                Console.WriteLine(String.Format("{0} {1}", node.Name, node.InnerText));
            }
        }
0
1 / 1 / 0
Регистрация: 04.02.2014
Сообщений: 26
24.07.2014, 00:42  [ТС]
Большое спасибо за ответы. Два часа тупил в код, но так и не разобрался. Вот кусок моего рабочего кода, но он читает данные только из первого блока, а как его заставить читать последний блок не знаю.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 Properties.Settings ps = Properties.Settings.Default;
             String xmlUrl = "http://api-metrika.yandex.ru/stat/traffic/summary?id=" + ps.CounterID + "&date1=" + ps.Date1 + "&date2=" + ps.Date2 + "&oauth_token=" + ps.YaTocen;
 
             XmlReader xmlReader = XmlReader.Create(xmlUrl);
 
             while (xmlReader.Read())
             {
                 switch (xmlReader.NodeType)
                 {
                     case XmlNodeType.Text:
                         ps.visits = xmlReader.Value;
                         xmlReader.ReadToFollowing("visits");
                         break;
                 }
             }
0
871 / 721 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
24.07.2014, 00:55
Leon11t,
Попробуйте вот так

Добавлено через 19 секунд
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Properties.Settings ps = Properties.Settings.Default;
String xmlUrl = "http://api-metrika.yandex.ru/stat/traffic/summary?id=" + ps.CounterID + "&date1=" + ps.Date1 + "&date2=" + ps.Date2 + "&oauth_token=" + ps.YaTocen;
 
XmlReader xmlReader = XmlReader.Create(xmlUrl);
XmlDocument xml = new XmlDocument();
 
xml.Load(xmlReader);
xmlWorker(xml);
 
............................................
 
public static void xmlWorker(XmlDocument xml)
{
    XmlNode xmlNode = xml.GetElementsByTagName("totals").Item(0);
    
    foreach (XmlNode node in xmlNode.ChildNodes)
    {
 
        // тут что то делаем с node
        // node.name - имя тега
        // node.InnerText - содержимое тега
        string output = String.Format("{0} {1}", node.Name, node.InnerText);
        Console.WriteLine(output);
    }
}
1
1 / 1 / 0
Регистрация: 04.02.2014
Сообщений: 26
24.07.2014, 11:34  [ТС]
Этот код сработал. Но теперь я не знаю как обработать те строки что мне выдало.
Куда теперь копать??


А, все вроде разобрался. Через свич-кейс все вышло.

Большое спасибо всем за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.07.2014, 11:34
Помогаю со студенческими работами здесь

Парсинг XML файла и сохранение информации из файла в структуре или массиве
Доброго времени суток. Пытаюсь распарсить XML файл и вытащить оттуда все данные, а после записать их в структуру или массив. Файл парсится...

насчет яндекс метрики
Вот задумался а стоит ли ставить на сайт? Очень нравится мне функция смс сообщения о недоступном сайте. Да и так вдруг яндекс + даст... ...

Api яндекс метрики
Здравствуйте нужно в метрику загрузить офлайн конверсии...

Счетчик Яндекс метрики
Здравствуйте уважаемые! Скажите мне несведущему человеку, как сделать так, чтобы счетчик Яндекса, установленный на сайте (library.m-sk.ru)...

BKcms код яндекс метрики
Доброго времени суток ! Народ не подскажете как в BKcms вставить код яндекс метрики. Это можно сделать через FTP, но не известно в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru